我希望根据特定功能的成功触发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);
});
答案 0 :(得分:8)
您始终可以在全局范围内设置它,即
window.myTimer = setInterval(function(){ setColor() }, 300);
$("#stop").click(function(){
clearInterval(window.myTimer);
});
答案 1 :(得分:1)
“窗口”不是必需的,我的意见是使用它是不好的做法。 只需删除“var”,范围将自动为全局。
答案 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);
});