2017-05-03 8 views
0

毎回ページをリフレッシュすると、カウントダウンタイマーがリロードされます。私が見つけたのは、ローカルストレージを使用する必要があるということです(私は推測します)。しかし、私はこのJavaScriptのカウントダウンコードでどのように実装できましたか?ここ は、あなたはそれが特定の時刻にカウントダウンしたい場合は、このページを見てみましょうことができ、私のJSフィドル https://jsfiddle.net/BrsJsk/srv3ywnL/リフレッシュ時のカウントダウンリロード

function getTimeRemaining(endtime) { 
 
    var t = Date.parse(endtime) - Date.parse(new Date()); 
 
    var seconds = Math.floor((t/1000) % 60); 
 
    var minutes = Math.floor((t/1000/60) % 60); 
 
    var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
 
    var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
 
    return { 
 
    'total': t, 
 
    'days': days, 
 
    'hours': hours, 
 
    'minutes': minutes, 
 
    'seconds': seconds 
 
    }; 
 
} 
 

 
function initializeClock(id, endtime) { 
 
    var clock = document.getElementById(id); 
 
    var daysSpan = clock.querySelector('.days'); 
 
    var hoursSpan = clock.querySelector('.hours'); 
 
    var minutesSpan = clock.querySelector('.minutes'); 
 
    var secondsSpan = clock.querySelector('.seconds'); 
 

 
    function updateClock() { 
 
    var t = getTimeRemaining(endtime); 
 

 
    daysSpan.innerHTML = t.days; 
 
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
 
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
 
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 
 

 
    if (t.total <= 0) { 
 
     clearInterval(timeinterval); 
 
    } 
 
    } 
 

 
    updateClock(); 
 
    var timeinterval = setInterval(updateClock, 1000); 
 
} 
 

 
var deadline = new Date(Date.parse(new Date()) + 59 * 24 * 60 * 60 * 1000); 
 
initializeClock('clockdiv', deadline);
<div id="clockdiv"> 
 
     <p1 class="dayss"><span class="num days">34</span> days</p1> 
 
     <p1 class="hourss"><span class="num hours">16</span> hours</p1> 
 
     <p1 class="secondss"><span class="num seconds">1</span> secs</p1> 
 
     <p1 class="minutess"><span class="num minutes">19</span> mins</p1> 
 
    </div>

+0

ですあなたはクッキーを使用することができます... – Sank6

+0

@SankarshMakam localstorageはクッキーより簡単です。 'window.unload'には、現在残っている時間をlocalstorageに設定します。 - ' localStorage.setItem( 'clock'、someVar) 'ページロード時に' if(localStorage.getItem( 'clock')){var deadline = localStorage.getItem( 'clock'); } else {var deadline = new Date(); } ' –

+0

カウントダウンを一時停止してから、ユーザーが戻ったときに再開したいと言っていますか?あなたの言うような記憶が必要です。それ以外の場合は、ユーザーがいつか離れて戻ってきてもカウントダウンを続行したい場合は、カウントダウンを一定の時間内に開始する必要があります。 –

答えて

2

あなたがする必要がありますからにカウントダウンする静的な瞬間を維持する。あなたのコードで毎回現在の日付を取得しているので、ロード時にリセットされます。

JSFiddle: https://jsfiddle.net/xrwm51sg/

キーの行は、次のようになります。

var deadline = new Date("Oct 2, 2020 12:30:00").getTime(); 

次に、あなたが今、時間の電流量によってマイナス今回でしょう。

var t = endtime - new Date().getTime(); 

全作業コード:

function getTimeRemaining(endtime) { 

    var t = endtime - new Date().getTime(); 
    var seconds = Math.floor((t/1000) % 60); 
    var minutes = Math.floor((t/1000/60) % 60); 
    var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
    var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
    return { 
    'total': t, 
    'days': days, 
    'hours': hours, 
    'minutes': minutes, 
    'seconds': seconds 
    }; 
} 

function initializeClock(id, endtime) { 
    var clock = document.getElementById(id); 
    var daysSpan = clock.querySelector('.days'); 
    var hoursSpan = clock.querySelector('.hours'); 
    var minutesSpan = clock.querySelector('.minutes'); 
    var secondsSpan = clock.querySelector('.seconds'); 

    function updateClock() { 
    var t = getTimeRemaining(endtime); 

    daysSpan.innerHTML = t.days; 
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 

    if (t.total <= 0) { 
     clearInterval(timeinterval); 
    } 
    } 

    updateClock(); 
    var timeinterval = setInterval(updateClock, 1000); 
} 

var deadline = new Date("Oct 2, 2020 12:30:00").getTime(); 
initializeClock('clockdiv', deadline); 
0
+1

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参照のためのリンクを提供することが望ましいでしょう(http://meta.stackoverflow.com/q/8259)。 –

0

あなたは、ローカルストレージを使用してこれを行うことができ、ここでのlocalStorage

<div id="clockdiv"> 
    <p1 class="dayss"><span class="num days">34</span> days</p1> 
    <p1 class="hourss"><span class="num hours">16</span> hours</p1> 
    <p1 class="secondss"><span class="num seconds">1</span> secs</p1> 
    <p1 class="minutess"><span class="num minutes">19</span> mins</p1> 
</div> 
<script> 

function getTimeRemaining(endtime) { 
    var t = Date.parse(endtime) - Date.parse(new Date()); 
    var seconds = Math.floor((t/1000) % 60); 
    var minutes = Math.floor((t/1000/60) % 60); 
    var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
    var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
    return { 
    'total': t, 
    'days': days, 
    'hours': hours, 
    'minutes': minutes, 
    'seconds': seconds 
    }; 
} 

function initializeClock(id, endtime) { 
    var clock = document.getElementById(id); 
    var daysSpan = clock.querySelector('.days'); 
    var hoursSpan = clock.querySelector('.hours'); 
    var minutesSpan = clock.querySelector('.minutes'); 
    var secondsSpan = clock.querySelector('.seconds'); 

    function updateClock() { 
    var t = getTimeRemaining(endtime); 
    //var value = parseInt(endtime); 
    localStorage.setItem("counter", endtime); 
    daysSpan.innerHTML = t.days; 
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 
    if (t.total <= 0) { 
     clearInterval(timeinterval); 
    } 
    } 

    updateClock(); 
    var timeinterval = setInterval(updateClock, 1000); 
} 

    if(localStorage.getItem("counter")){ 
    var deadline = localStorage.getItem("counter"); 
    }else{ 
     var deadline = new Date(Date.parse(new Date()) + 59 * 24 * 60 * 60 * 1000); 
    } 

initializeClock('clockdiv', deadline); 
</script> 
ここ

であなたのコードがある私は推測フィドルhttps://jsfiddle.net/abhaybhosale/3eg99sxa/1/

関連する問題