clearInterval不会停止间隔操作

时间:2019-02-05 02:22:23

标签: javascript

我正在使用计时器,希望setInterval()操作在计数器达到零时终止。此外,如果您愿意的话,我希望该功能“关闭”,这样我就可以重置输入到计时器中的值,而不会再次使计时器开始递减。

当我像这样配置代码时:

    function countdown(){ 
        var intervalKill = setInterval(function(){
        var start = document.getElementById("startValue").innerHTML;
        if (start > 1){
            var time_left = start - 1;
            document.getElementById("startValue").innerHTML = time_left;
        } else if (start === 1) {
            clearInterval(intervalKill)
        }
        
    }, 1000);
    }

我可以很好地运行它,但是如果它达到1,并且重置了计时器,它将立即立即开始倒计时。

当我这样编码时:

    function countdown(){ 
        var intervalKill = setInterval(function(){
        var start = document.getElementById("startValue").innerHTML;
        if (start > 1){
            var time_left = start - 1;
            document.getElementById("startValue").innerHTML = time_left;
        } else if (start === 1) {
            clearInterval(intervalKill);
            break;
        }
        
    }, 1000);
    }

该功能根本无法运行。有人可以阐明这里发生的事情以及如何使其工作吗?

1 个答案:

答案 0 :(得分:0)

function countdown(){ 
    var intervalKill = setInterval(function(){
    var start = document.getElementById("startValue").innerHTML;
    if (start > 1){
        var time_left = start - 1;
        document.getElementById("startValue").innerHTML = time_left;
    } else if (+start === 1) {
        clearInterval(intervalKill);
        // break;  <-- not necessary
    }

}, 1000);
}

要么使用一元+或startparseInt解析为整数,要么使用==代替===,因为后者也会检查类型信息。 innerHTML返回一个字符串。