2016-05-17 116 views
-1
var started = false; 
function start() { 
    var timer; 
    if(started === false) { 
     timer = setInterval(decrease, 1000); 
     started = true; 
    } else { 
     clearInterval(timer); 
     console.log("Should Clear"); 
    } 
} 

setInterval可以工作,但是當我再次運行該函數時,它會在控制檯中打印它應該被刪除。但事實並非如此。clearInterval不起作用

+0

只需刪除線VAR定時器; – Rocker1985

+0

我推薦閱讀http://stackoverflow.com/q/111102/497418 – zzzzBov

回答

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"); 
    } 
} 
1

timer每次您撥打start時都會重新初始化,所以第二次調用它時,它並不指向要清除的計時器ID。

0

因爲timer是函數的範圍。所以當你第二次調用它時,它在另一個範圍內。

1

使用這樣

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

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