我有一个if语句,它检查c变量是否达到100,然后调用clearInterval,但是代码仍在运行。如果我在定时器函数中移动c ++,则c保持为0。
我在这里有一个Codepen https://codepen.io/geo555/pen/WYJdQd
var c=0;
var elem=document.getElementById("counter");
elem.innerHTML="1";
window.onload = timer;
function timer(){
var myInterval = setInterval(count,50)
if (c==100) {
clearInterval(myInterval)
}
}
function count(){
c++;
elem.innerHTML=c;
console.log(c)
}
答案 0 :(得分:0)
您的问题是因为您正在检查c
变量外部间隔。
var c=0;
var elem=document.getElementById("counter");
elem.innerHTML="1";
window.onload = timer;
var myInterval;
function timer(){
myInterval = setInterval(count,50)
}
function count(){
c++;
elem.innerHTML=c;
console.log(c)
if (c==100) {
clearInterval(myInterval)
}
}
hello
<div id="counter"></div>
答案 1 :(得分:0)
myInterval 对于函数 time 是本地的。将其设置为 global 。清除 count()中的时间间隔:
var c=0;
var myInterval
var elem=document.getElementById("counter");
elem.innerHTML="1";
window.onload = timer;
function timer(){
myInterval = setInterval(count,50)
}
function count(){
c++;
elem.innerHTML=c;
if (c==50) {
clearInterval(myInterval)
}
}
<p id="counter"></p>