2016-12-02 39 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); 
相关问题