調べながら下記コードまでは作ることができたのですが、
「画面を表示してから6時間後」というのが出来ずに悩んでいます...
'use strict'; var interval = 1000; function countdownTimer(){ var endDate = new Date(); var nowDate = new Date(); endDate.setHours(6, 0, 0); var period = endDate - nowDate ; var addZero = function(n){return('0'+n).slice(-2);} if(period >= 0) { var hour = Math.floor(period / (1000 * 60 * 60)); period -= (hour *(1000 * 60 * 60)); var minutes = Math.floor(period / (1000 * 60)); period -= (minutes * (1000 * 60)); var second = Math.floor(period / 1000); var insert = ""; insert += '<span class="h">' + hour + ':' + '</span>'; insert += '<span class="m">' + addZero(minutes) +':' + '</span>'; insert += '<span class="s">' + addZero(second) + '</span>'; document.getElementById('sample').innerHTML = insert; setTimeout(countdownTimer,1000); } else { var insert = ""; var text = "終了"; insert += '<span>' + text + '</span>'; document.getElementById('sample').innerHTML = insert; } } countdownTimer();
今のままだと、本日6時までのカウントダウンになってしまいます。
JavaScriptはまだまだ勉強中で、何か間違いがあればご指摘いただけると幸いです。
主に、下記ページを参考にしました。
https://qiita.com/piesuke0727/items/91333b9a1ba8fe051be2
よろしくお願いいたします。
「今から何時間後」の計算であればどこにいってもありそうに思います。
むしろ、6時間を秒換算にして普通にカウントダウンすれば良いのでは?
ご回答ありがとうございます。
できればこのコードを使って実装したいのですが、秒換算しても使えるでしょうか?説明が足りずすみません。
>できればこのコードを使って実装したい
その考え捨てよ?
setTimeout(六時間後実行したいこと, 1000*60*60*6);
の1行で済むことを、なぜこのコードを使いたいの?
まずはコピー&ペーストした1行1行の意味を理解した方がよろしいかと。それぞれの変数には何が格納されているか、その行を実行するとどうなるか、わかっていないだけです。
ご意見ありがとうございます。
もう一度見直してみます。
回答2件
あなたの回答
tips
プレビュー