2017-01-06 40 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});