SetTimeout和ClearTimeout(不清除0)

时间:2016-07-09 17:26:15

标签: javascript

也许只是睡眠剥夺,但我无法理解我做错了什么。

我正在使用countDown来调用onLoad函数setInterval

countDown函数内部,当数字达到0时,我调用clearTimeout,除非它达到2时被调用。

我做错了什么?

这是一个片段。



var interval, count = 5;

countDown()
interval = setInterval(countDown, 1000);

function countDown() {
  document.body.innerHTML = count
  count--

  if(count === 0) {
    clearInterval(interval)
    document.body.innerHTML = "Redirecting to ....."
  }
}




3 个答案:

答案 0 :(得分:1)

function countDown() {
  document.body.innerHTML = count;
  if(count === 0) {
    clearInterval(interval)
    document.body.innerHTML = "Redirecting to .....";
  } else {
    count--;
  }
}

答案 1 :(得分:1)

这是因为您首先减少计数器然后进行评估,因为错过了这一步



var interval, count = 5;

countDown();
interval = setInterval(countDown, 1000);


function countDown() {
  

  if(count === 0) {
    clearInterval(interval)
    document.body.innerHTML = "Redirecting to ....."
  }
  else
  {
     document.body.innerHTML = count
     count--
  }
}




答案 2 :(得分:1)

只需将count--放在if语句之后,如果要在此之后阻止执行,则将return;放在if语句的末尾。

var interval, count = 5;

countDown()
interval = setInterval(countDown, 1000);

function countDown() {
  document.body.innerHTML = count;
  

  if(count === 0) {
    clearInterval(interval);
    document.body.innerHTML = "Redirecting to .....";
    return;
  }
  count--
}