motogp fan

motogp ファンによる、雑ブログ、ガジェットネタも

はてなブログでプログラムを学ぼう11 カウントダウン計算の改造 javaScript

今週はモテギGP、ついに日本グランプリの週です。

ヘッダーに表示している開幕までの残り日数も僅か。

javaScriptで表示中の機能を、ちょっと改造しましょう。

 

やる事

  1. 開催中はカウントが0になるので、イベント内容に変更。
  2. 変更する内容はフリー走行、予選、決勝にする。
  3. イベント終了後2日間は終了表示。
  4. その後は何も表示しない。

復習 

復習ソース、単純に開催日から当日を引き算している。
但し、通算秒数で結果が戻って来るので日付変換する。

-----------------------------------------------------------

//ヘッダー表示
CountDownMotegi();
//共通関数
function CountDownMotegi() {
var vxdt = new Date('2015/10/09');
var vsdt = new Date();
var vsec = vxdt.getTime()-vsdt.getTime();
var vday = Math.floor( vsec / (1000*60*60*24) );
document.write('日本グランプリ開幕まであと ' + vday + ' 日');
}

-----------------------------------------------------------

 

検証

 

 

開幕日
検証日
 結果発表

クリックしないと何も起きないよ

+++++++ ここに結果を表示 +++++++++

++++++++++++++++

 

 結果ソース

今気が付いたのですが、dateでセットした日付に時間まで取得していて、1日ずれてました。
基準が0:00なので、-1で帳尻合うから単純に引いてます。
(業務で使うなら0:00同士の引き算に改造して使ってください)

 

<script type="text/javascript">// <![CDATA[
 //ヘッダー表示
 CountDownMotegi('2015/10/09');
 //共通関数
 function CountDownMotegi(indt) {
  //var vxdt = new Date('2015/10/09');
  var vxdt = new Date(indt);
  var vsdt = new Date(); //時間まで取得する
  var vsec = vxdt.getTime()-vsdt.getTime();
  var vday = Math.floor( vsec / (1000*60*60*24) );
  var vday = vday+1; //時間有りのため補正
  var vmsg ='';
  if(vday > 0){
   vmsg = '日本グランプリ開幕まであと ' + vday + ' 日';
   } else {
   if (vday == 0){
    vmsg = '日本グランプリ開幕 フリー走行日';
   }else if(vday == -1){
    vmsg = '日本グランプリ予選日';
   }else if(vday == -2){
    vmsg = '日本グランプリ決勝日';
   }else if(vday == -3){
    vmsg = '日本グランプリ終了';
   }else if(vday == -4){
    vmsg = '日本グランプリ終了';
   }else{
    vmsg = '';
   }
  }

  // document.write('日本グランプリ開幕まであと ' + vday + ' 日');
  document.write(vmsg);
 }

// ]]></script>

 

 

以上