Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearInterval不';行不通_Javascript_Timer - Fatal编程技术网

Javascript clearInterval不';行不通

Javascript clearInterval不';行不通,javascript,timer,Javascript,Timer,setInterval可以工作,但当我再次运行该函数时,它会在控制台中打印出应该删除它。但是它没有。timer在每次调用start时都会重新初始化,所以第二次调用它时,它不会指向要清除的计时器id。timer在函数中声明,因此当再次调用它时,它是一个新实例 尝试在函数外部声明它,如下所示: var started = false; function start() { var timer; if(started === false) { timer = setIn

setInterval可以工作,但当我再次运行该函数时,它会在控制台中打印出应该删除它。但是它没有。

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

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

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

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

因为
计时器
在功能范围内。因此,当您第二次调用它时,它位于另一个作用域中。

像这样使用

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

只需移除线路var定时器;我推荐阅读
var started = false;
var timer;
function start() {

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