如何在javascript中停止间隔?
为什么间隔不会停止?
setInterval(alarm, 500);
window.clearInterval(alarm);
也尝试过:
window.setInterval(alarm, 500);
window.clearInterval(alarm);
始终存在同样的问题:(
仍然不起作用:
var switc = 1;
getValue();
function getValue (){
if(switc == 1){
var myTimer = window.setInterval(alarm, 500);
}
else if(switc == 0){
window.clearInterval(myTimer);
}
}
function alarm(){
console.log("test");
}
答案 0 :(得分:11)
调用setInterval时,它返回一个用于取消事件的整数。将其存储到变量中并使用该变量取消事件。
var myTimer = window.setInterval(alarm, 500);
window.clearInterval(myTimer);
编辑:
您的代码不起作用,因为myTimer是一个局部变量,每次调用该函数时都会重置!
让它全球化。
var myTimer = null;
function getValue (){
if(switc == 1){
myTimer = window.setInterval(alarm, 500);
}
...
重复调用函数或执行代码片段,每次调用该函数之间都有固定的时间延迟。
<强>语法强>
var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
,其中
intervalID
是您可以传递给clearInterval()的唯一间隔ID。func
是您想要重复调用的函数。code
是您希望重复执行的一串代码(建议不要使用此语法,原因与使用eval()相同)delay
是每次调用func之前setInterval()函数应该等待的毫秒数(千分之一秒)。与setTimeout一样,强制执行最小延迟。
请注意,在第一种语法中将其他参数传递给函数在Internet Explorer中不起作用。如果要在该浏览器上启用此功能,则必须使用兼容性代码(请参阅回调参数段落)。答案 1 :(得分:2)
该代码表明对API的误解。 setInterval()
函数有两个参数:一个要调用的函数,一个表示调用之间的毫秒数的数字。函数返回标识该特定间隔计时器的标记(数字)。可以将令牌传递给clearInterval()
以取消计时器。
答案 2 :(得分:1)
您要清除不存在的间隔。将setInterval()返回的id分配给变量,并在clearInterval()中使用它。
在您的情况下,警报是执行的功能,而不是间隔ID
var interval = setInterval(alarm, 500);
clearInterval(interval);
答案 3 :(得分:1)
var timer = setInterval(alarm, 500);
Window.clearInterval(timer);
function alarm() {
// Do stuff
}
您需要将间隔的句柄保存到变量中,以便稍后在要清除/停止它时可以引用它。