clearInterval不起作用

时间:2016-05-17 18:25:30

标签: javascript timer

var started = false;
function start() {
    var timer;
    if(started === false) {
        timer = setInterval(decrease, 1000);
        started = true;
    } else {
        clearInterval(timer);
        console.log("Should Clear");
    }
}

setInterval可以工作,但是当我再次运行该函数时,它会在控制台中打印出它应该删除的内容。但事实并非如此。

4 个答案:

答案 0 :(得分:1)

每次拨打timer

start都会重新初始化,所以第二次调用它时,它不会指向要清除的计时器ID。

答案 1 :(得分:1)

timer在您的函数中声明,因此当您再次调用它时,它是一个新实例。

尝试在函数外声明它,如下所示:

var started = false;
var timer;
function start() {
    if(started === false) {
        timer = setInterval(decrease, 1000);
        started = true;
    } else {
        clearInterval(timer);
        console.log("Should Clear");
    }
}

答案 2 :(得分:1)

像这样使用

var started = false;
var timer;
function start() {

    if(started === false) {
        timer = setInterval(decrease, 1000);
        started = true;
    } else {
        clearInterval(timer);
        console.log("Should Clear");
    }
}

答案 3 :(得分:0)

因为timer在函数范围内。因此,当您第二次调用它时,它位于另一个范围内。