setInterval - 倒计时时间不按预期工作

时间:2015-10-08 08:46:26

标签: javascript setinterval

function countdown() {
        setInterval(function() {
            seconds = seconds - 1;

            if(seconds < 1) {
                endGame();
            }
            else {
                if(seconds < 60) {
                    //...
                }
                $('.Timer').text(seconds);      
            }

        }, 1000);
    }

当达到0时调用结束游戏功能 结束游戏功能只是重启按钮重启游戏。

如果按下重启按钮,秒数会逐一减少。

function reset() {
        seconds = 60;           
    }

这是第一次运作良好。秒数每秒减少一秒。但经过几次重启后,秒数会很快减少。它在五到十秒内达到零。

function startGame() {
        reset();            
        countdown();
        $('.start-button').hide();
    }   

function endGame() {
        $('.start-button').show();
    }

1 个答案:

答案 0 :(得分:3)

一旦倒计时结束,你需要清除计时器,否则会有多个计时器实例运行导致上述行为

function countdown() {
    var interval = setInterval(function () {
        seconds = seconds - 1;

        if (seconds < 1) {
            clearInterval(interval);
            endGame();
        } else {
            if (seconds < 60) {
                //...
            }
            $('.Timer').text(seconds);
        }

    }, 1000);
}
相关问题