2017-01-06 69 views
0

我正在嘗試進行倒計時,刷新此頁面後不重新啓動。我正在使用基思木倒計時。我想數到5分鐘。頁面刷新持續的Javascript倒計時

var countdownTarget = localStorage.getItem('countdownTarget'); 
    if (countdownTarget === null) 
    { 
     var countdownTarget = new Date(); 
     countdownTarget = new Date(countdownTarget.getFullYear(), countdownTarget.getMonth(), countdownTarget.getDate(), countdownTarget.getHours(), countdownTarget.getMinutes() + 5, countdownTarget.getSeconds()); 
     localStorage.setItem('countdownTarget', countdownTarget); 
    } 

    $('#defaultCountdown').countdown({ until : countdownTarget, format: 'MS', compact: true}); 

我將當前日期+5分鐘保存爲countdownTarget作爲countdownTarget(僅當它之前沒有完成時)。如果用戶刷新頁面,時間應該是持久的。但是有問題。當我第一次加載頁面時,時間從5分鐘開始計算(這應該是正常的),但是當我嘗試再次刷新時,它從36分鐘開始計數,我不知道爲什麼,我不知道這36分鐘來自哪裏。

+0

36分鐘從哪裏來?在代碼示例中看不到任何此類內容。 –

+0

你可能不是故意要影響countdownTarget如果通過說var = – aw04

+1

爲空我很確定localStorage將數據存儲爲字符串。如果你正在從localStorage加載存儲的字符串,然後將它添加到一個int,你不會得到預期的結果。在將其添加到計數器之前,需要將該存儲的字符串轉換回int。 – Korgrue

回答

1

而不是重新宣佈日期,爲什麼不只是增加分鐘?你的代碼爲我工作。此外,您只應發起一次countdownTarget

var countdownTarget = localStorage.getItem('countdownTarget'); 
if (countdownTarget === null) { 
    countdownTarget = new Date(); 
    countdownTarget.setMinutes(countdownTarget.getMinutes() + 5); 
    localStorage.setItem('countdownTarget', countdownTarget); 
} else { 
    countdownTarget = new Date(countdownTarget); 
} 
$('#defaultCountdown').countdown({ until : countdownTarget, format: 'MS', compact: true});