Moment.js倒计时不会超过一秒钟

时间:2016-09-07 03:52:04

标签: javascript momentjs countdown

我正在使用moment.js创建一个三分钟的倒计时。但是,每次页面加载时,计时器会减少一秒钟并在2:59停止。打印出futuredifference等变量似乎会产生正常结果,所以我相信我的错误在于倒计时。我的倒计时出了什么问题?

这是我的代码:

    <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>

1 个答案:

答案 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的值,但从未真正更新它。