2016-12-02 71 views
-1

爲什麼clearInterval()不起作用?我究竟做錯了什麼?我嘗試了一堆東西,但他們似乎並沒有制定出...Javascript clearInterval不適用於計時器

var s = 60; 
var timer = null; 

function Ftimer(){ 
    document.getElementById("sec").innerHTML = s--; 
} 

document.getElementById("start").onclick = function() { 
    var timer = setInterval(function(){ Ftimer() }, 1000); 

} 

document.getElementById("stop").onclick = function() { 
    clearInterval(timer); 
} 
+1

調試碼。在'clearInterval'行放置一個斷點。檢查'timer'的值。然後真正想想爲什麼它是空的。 – 2016-12-02 18:08:33

+0

'timer'始終爲'null'。您將'setInterval'的返回值賦給一個不同的本地'timer'變量。 – Quentin

+0

在你的'onclick'函數中刪除'var'。 – JulCh

回答

1

這是因爲你在這裏覆蓋您最初timer變量:

document.getElementById("start").onclick = function() { 
    // this clobbers your previous `timer` assignment 
    var timer = setInterval(function(){ Ftimer() }, 1000); 

} 

所以通過簡單地移除var修復它,並使用外部作用域timer變量:

document.getElementById("start").onclick = function() { 
    // this assigns to your previous `timer` 
    timer = setInterval(function(){ Ftimer() }, 1000); 

} 
2

var timer使範圍的onclick函數,而不是全局變量。

timer = setInterval(Ftimer, 1000); 
相關問題