我正在使用moment.js创建一个三分钟的倒计时。但是,每次页面加载时,计时器会减少一秒钟并在2:59停止。打印出future
和difference
等变量似乎会产生正常结果,所以我相信我的错误在于倒计时。我的倒计时出了什么问题?
这是我的代码:
<script type="text/javascript">
$(document).ready(function(){
var now = moment();
var future = moment(now).add(3, 'm');
var difference = future - now;
var duration = moment.duration(difference, 's');
var interval = 1000;
setInterval(function() {
if(duration.asSeconds() <= 0) {
clearInterval(intervalId);
document.getElementById("clock").innerHTML = moment(duration.asSeconds()).format("m:s");
}
duration = moment.duration(duration.asSeconds() - 1, 's');
document.getElementById("clock").innerHTML = moment(duration.asSeconds()).format("m:s");
}, interval);
});
</script>
答案 0 :(得分:0)
你可以改变它是这样的:
if (moment.duration(future - moment()).asSeconds() <= 0) {
并更改
duration = moment.duration(duration.asSeconds() - 1, 's');
是
duration = moment.duration(moment.duration(future - moment()).asSeconds(), 's');
因为您的关闭正在捕获上面duration
的值,但从未真正更新它。