clearInterval不会停止间隔

时间:2018-11-24 09:27:53

标签: javascript setinterval

我有一个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)
}

2 个答案:

答案 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>