Javascript 如何使用clearInterval()?
我正在尝试在repl.it上制作一个基于web的交互式汽车游戏/HTML。我试图用setInterval/clearInterval系统来做挡风玻璃雨刮器,但是clearInterval()函数对我不起作用。这不会消除间隔Javascript 如何使用clearInterval()?,javascript,Javascript,我正在尝试在repl.it上制作一个基于web的交互式汽车游戏/HTML。我试图用setInterval/clearInterval系统来做挡风玻璃雨刮器,但是clearInterval()函数对我不起作用。这不会消除间隔 var区间=”; 函数startInterval(){ 间隔=设置间隔(函数(){ document.getElementById('demo').innerHTML='type code'; setTimeout(函数(){ document.getElementById(
var区间=”;
函数startInterval(){
间隔=设置间隔(函数(){
document.getElementById('demo').innerHTML='type code';
setTimeout(函数(){
document.getElementById('demo').innerHTML='other code';
}, 1000);
}, 2000);
}
函数stopInterval(){
间隔时间;
}
您必须定义函数外的间隔
变量:
let interval;
function startInterval() {
interval = setInterval(function() {
document.getElementById('demo').innerHTML = 'type code';
setTimeout(function() {
document.getElementById('demo').innerHTML = 'other code';
}, 1000);
}, 2000);
}
function stopInterval() {
clearInterval(interval);
}
``
首先,欢迎来到StackOverflow 您的代码工作正常,但请记住您使用的是
setTimout
,因此即使调用stopInterval()
,超时内的代码也会再次触发
为了防止它,你可以这样做
- 以
0开始间隔
- 当
再次将间隔设置为clearInterval()
0
- 现在,在
函数中,仅当setTimeout
interval>0
var pre=document.querySelector(“pre”)
var区间=0;
函数startInterval(){
pre.innerHTML+='START called\n';
间隔=设置间隔(函数(){
pre.innerHTML+=“类型代码\n”;
setTimeout(函数(){
如果(间隔>0){
//仅当间隔未清除时
pre.innerHTML+=“其他代码\n”;
}
}, 1000);
}, 2000);
}
函数stopInterval(){
pre.innerHTML+='STOP called\n';
间隔时间;
间隔=0;
}
文件
.querySelector(“#btnStart”)
.addEventListener(“单击”,startInterval);
文件
.querySelector(“btnStop”)
.addEventListener(“单击”,停止间隔)代码>
开始-停止
这是否回答了您的问题?代码工作正常,但请记住您使用的是setTimout
,因此即使调用stopInterval()
,保留的间隔也会触发。。。您可以做的是,在0
中启动间隔,然后在clearInterval()
时再次将间隔设置为0
。。。在设置超时内,仅当interval>0
时运行代码。。。这有意义吗?这就是我所做的,否则我不能在不同的函数中使用它,或者如果需要的话,也不能在if-then-else语句中使用它。对不起,我没确定你看到了。我会编辑它。