如何让 clearInterval() 在 JavaScript 中循环工作
How to get clearInterval() to work in a loop in JavaScript
所以我试图让一个函数每秒一次到 运行,然后在四秒后我希望它停止使用 clearInterval()
function dotdotdot(){
var x = 0;
setInterval(function(){
if (x>=3){
torpWri = torpWri + ".";
document.getElementById("torpTxt").innerHTML = torpWri;
x++;
}
else{
x = 0;
clearInterval();
}
},1000);
}
这是我的函数,它应该在四秒后停止,然后在我再次调用它时将 x 重置为 0。
function loadButton(){
torpWri = "Torpedo Loading"
if(torpLoadAmount[arNum]<5){
torpLoadAmount[arNum]++;
torpAmount--;
document.getElementById("torpCnt").innerHTML = torpAmount;
document.getElementById("torpTxt").style.visibility = "visible";
document.getElementById("butunload").disabled=true;
document.getElementById("butfire").disabled=true;
document.getElementById("torpTxt").innerHTML = torpWri;
dotdotdot();
}
else{
document.getElementById("torpTxt").style.visibility = "visible";
document.getElementById("torpTxt").innerHTML = "Torpedo Bay Full";
}
timer3();
}
我就是这样称呼它的。
我只需要知道为什么它不是每秒 运行 调用函数 dotdotdot();
然后在四点后停止。然后当我再次调用它时,它应该全部重置。但不是运行宁...
找了一段时间没找到,所以才来的
(另外,请不要评论我的其他代码,我知道可能有更简单的方法,但这就是我现在正在使用的方法。)
您需要在设置间隔时存储句柄/间隔Id,然后在要清除间隔时使用它:
function dotdotdot(){
var x = 0;
var intervalId = -1;
intervalId = setInterval(function(){
if (x>=3){
torpWri = torpWri + ".";
document.getElementById("torpTxt").innerHTML = torpWri;
x++;
} else {
x = 0;
clearInterval(intervalId);
}
},1000);
}
更多信息:https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers
setInterval
会 return 一个 timerid
。所以喜欢
var timer = setInterval(fun......)
然后
clearInterval(timer)
setInterval
returns一个timerID,需要传给clearInterval
.
var ticks = 0;
var intervalID = setInterval(function() {
if (++ticks == 4) {
clearInterval(intervalID);
}
}, 1000);
您也可以改用 setTimeout
,只是在满足条件时不安排新报价。
setTimeout(function callback(ticks) {
if (ticks > limit) {
return;
}
setTimeout(callback, 0, ++ticks);
}, 1000, 0)
所以我试图让一个函数每秒一次到 运行,然后在四秒后我希望它停止使用 clearInterval()
function dotdotdot(){
var x = 0;
setInterval(function(){
if (x>=3){
torpWri = torpWri + ".";
document.getElementById("torpTxt").innerHTML = torpWri;
x++;
}
else{
x = 0;
clearInterval();
}
},1000);
}
这是我的函数,它应该在四秒后停止,然后在我再次调用它时将 x 重置为 0。
function loadButton(){
torpWri = "Torpedo Loading"
if(torpLoadAmount[arNum]<5){
torpLoadAmount[arNum]++;
torpAmount--;
document.getElementById("torpCnt").innerHTML = torpAmount;
document.getElementById("torpTxt").style.visibility = "visible";
document.getElementById("butunload").disabled=true;
document.getElementById("butfire").disabled=true;
document.getElementById("torpTxt").innerHTML = torpWri;
dotdotdot();
}
else{
document.getElementById("torpTxt").style.visibility = "visible";
document.getElementById("torpTxt").innerHTML = "Torpedo Bay Full";
}
timer3();
}
我就是这样称呼它的。
我只需要知道为什么它不是每秒 运行 调用函数 dotdotdot();
然后在四点后停止。然后当我再次调用它时,它应该全部重置。但不是运行宁...
找了一段时间没找到,所以才来的
(另外,请不要评论我的其他代码,我知道可能有更简单的方法,但这就是我现在正在使用的方法。)
您需要在设置间隔时存储句柄/间隔Id,然后在要清除间隔时使用它:
function dotdotdot(){
var x = 0;
var intervalId = -1;
intervalId = setInterval(function(){
if (x>=3){
torpWri = torpWri + ".";
document.getElementById("torpTxt").innerHTML = torpWri;
x++;
} else {
x = 0;
clearInterval(intervalId);
}
},1000);
}
更多信息:https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers
setInterval
会 return 一个 timerid
。所以喜欢
var timer = setInterval(fun......)
然后
clearInterval(timer)
setInterval
returns一个timerID,需要传给clearInterval
.
var ticks = 0;
var intervalID = setInterval(function() {
if (++ticks == 4) {
clearInterval(intervalID);
}
}, 1000);
您也可以改用 setTimeout
,只是在满足条件时不安排新报价。
setTimeout(function callback(ticks) {
if (ticks > limit) {
return;
}
setTimeout(callback, 0, ++ticks);
}, 1000, 0)