从另一个功能清除间隔

时间:2015-08-12 12:24:41

标签: javascript jquery

我希望根据特定功能的成功触发setInterval()

function myCountComplete(){
   //do something
   count++;
   if(count > 10){
      var myVar = setInterval(function(){ setColor() }, 300);
   }
}

function setColor() {
    var x = document.body;
    x.style.backgroundColor = x.style.backgroundColor == "yellow" ? "pink" : "yellow";
}

如何在单击按钮时清除myVar间隔?

$("#stop").click(function(){
    clearInterval(myVar);
});

3 个答案:

答案 0 :(得分:8)

您始终可以在全局范围内设置它,即

window.myTimer = setInterval(function(){ setColor() }, 300);

$("#stop").click(function(){
    clearInterval(window.myTimer);
});

答案 1 :(得分:1)

“窗口”不是必需的,我的意见是使用它是不好的做法。 只需删除“var”,范围将自动为全局。

http://www.w3schools.com/js/js_scope.asp

答案 2 :(得分:0)

这是一个范围问题 见What is the scope of variables in JavaScript?

基本上, 将myVar声明为两种情况下可用的范围。例如:

function myCountComplete(){
//do something
count++;
if(count > 10){
   window.myVar = setInterval(function(){ setColor() }, 300);
}
}

$("#stop").click(function(){
    clearInterval(window.myVar);
});