Moment.js 倒计时不超过一秒
Moment.js countdown not decrementing more than a second
我正在使用 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>
你可以把它改成这样:
if (moment.duration(future - moment()).asSeconds() <= 0) {
并改变
duration = moment.duration(duration.asSeconds() - 1, 's');
成为
duration = moment.duration(moment.duration(future - moment()).asSeconds(), 's');
因为你关闭是捕获上面 duration
的值,但从未真正更新它。
我正在使用 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>
你可以把它改成这样:
if (moment.duration(future - moment()).asSeconds() <= 0) {
并改变
duration = moment.duration(duration.asSeconds() - 1, 's');
成为
duration = moment.duration(moment.duration(future - moment()).asSeconds(), 's');
因为你关闭是捕获上面 duration
的值,但从未真正更新它。