Javascript 如何使用clearInterval()?

Javascript 如何使用clearInterval()?,javascript,Javascript,我正在尝试在repl.it上制作一个基于web的交互式汽车游戏/HTML。我试图用setInterval/clearInterval系统来做挡风玻璃雨刮器,但是clearInterval()函数对我不起作用。这不会消除间隔 var区间=”; 函数startInterval(){ 间隔=设置间隔(函数(){ document.getElementById('demo').innerHTML='type code'; setTimeout(函数(){ document.getElementById(

我正在尝试在repl.it上制作一个基于web的交互式汽车游戏/HTML。我试图用setInterval/clearInterval系统来做挡风玻璃雨刮器,但是clearInterval()函数对我不起作用。这不会消除间隔

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
这有意义吗

下面是StackOverflow代码中的一个简单示例:

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语句中使用它。对不起,我没确定你看到了。我会编辑它。