Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかるJavaScript講座


Step.57 - 時間がくるとページを変える


時間がくると違うページを表示します。


Step テーマ
● 現在時刻から 次の「時」0分 までの時間を求める

実行例


今回、なし。



リスト


<script type="text/javascript"><!--
myRef = new Array(24);
myRef[0]="am0.htm";
myRef[1]="am1.htm";
myRef[2]="am2.htm";
myRef[3]="am3.htm";
myRef[4]="am4.htm";
myRef[5]="am5.htm";
myRef[6]="am6.htm";
myRef[7]="am7.htm";
myRef[8]="am8.htm";
myRef[9]="am9.htm";
myRef[10]="am10.htm";
myRef[11]="am11.htm";
myRef[12]="pm0.htm";
myRef[13]="pm1.htm";
myRef[14]="pm2.htm";
myRef[15]="pm3.htm";
myRef[16]="pm4.htm";
myRef[17]="pm5.htm";
myRef[18]="pm6.htm";
myRef[19]="pm7.htm";
myRef[20]="pm8.htm";
myRef[21]="pm9.htm";
myRef[22]="pm10.htm";
myRef[23]="pm11.htm";

myHour = (new Date()).getHours();
myMin = (new Date()).getMinutes() * 60;
mySec = (new Date()).getSeconds();

myNow = myMin + mySec;
myNext = (3600 - myNow) * 1000;

myNextHour = (myHour == 23) ? 0 : myHour+1 ;

setTimeout("location.href=myRef[myNextHour]",myNext);
// --></script>


サンプルだけの HTMLは こちらへ

説明


[Q] 0分になると 違うページにリンクしたいのですが
[A] こんな感じ!?

時間がくると自動的に変えるというと、少し難しいように思えますが、あと何分したら違うページをリンクするかというと、なんか簡単な気がします。
はい、簡単です。

たとえば、いま、20:50:13 だとすると、21:00:00 までは、あと何秒かというと、えーと、えーと、9分と、えーと、47秒かな?
だとすると (^^; 、(9*60)+47 つまり、587秒後が 午後9時なわけです。

PCに、この587秒を計算させるためには、
3600 - (現在の分*60) - 現在の秒
例でいうと、 3600 - (50*60) - 13 = 587 おお、正解です (^^;

現在の時間を取得するのは、Step.3 にて説明しました。
今回は、
myHour = (new Date()).getHours();
myMin = (new Date()).getMinutes() * 60;
mySec = (new Date()).getSeconds();
といった感じで、時、分、秒を取得しています。 Step.3のやりかたの方がスマートです。

myNow = myMin + mySec;
myNext = (3600 - myNow) * 1000;


次の「時」は、今の「時」に 1 を足せば良いわけですが、23時の次の「時」は 24ではなく、0ですので、
myNextHour = (myHour == 23) ? 0 : myHour+1 ;
となります。

次の時間は、myNextミリ秒後。
次の時間のリンク先は location.href = myRef[myNextHour] 。

もうおわかりですね いつものSetTimeout()です。
setTimeout("location.href=myRef[myNextHour]",myNext);
myNextミリ秒後に、location.href = myRef[myNextHour] へリンクする。

とんでもない ページだ。。


 
イヌでもわかるJavaScript講座 お品書き へ戻ります