javascript - 我的 JavaScript 倒计时器无法正常运行

标签 javascript

我的 JavaScript 计时器工作得很奇怪:它从 3-2 开始,然后突然结束(没有经过步骤 1 和 0)。这是代码:

var count = 3;
function countDown() {
  document.getElementById("count").innerHTML = count;
  if (count > 0) {
    count--
  }
  else {
    clearInterval(ncount);
    document.getElementById("count").style.display = "none"
  }
  var ncount = setInterval("countDown()", 1000);
}
<form id="askName">
  <label> Enter your username: </label>
  <input id="input" type="text" required maxlength="10">
  <button type="button" onclick="countDown()"> Submit </button>
</form>
<h2 id="count"> </h2>

为什么会出现这种情况?

最佳答案

问题是你的setInterval正在调用生成另一个 setInterval 的函数,这会导致计数更快地递减。您可以使用内部函数来避免此问题。

var count = 3;
function countDown() {
   function helper(){
    document.getElementById("count").innerHTML = count;
    if (count > 0) {
      count--;
    }  else {
      clearInterval(ncount);
      document.getElementById("count").style.display = "none"
    }
  }
  var ncount = setInterval(helper, 1000);
}
<form id="askName">
  <label> Enter your username: </label>
  <input id="input" type="text" required maxlength="10">
  <button type="button" onclick="countDown()"> Submit </button>
</form>
<h2 id="count"> </h2>

关于javascript - 我的 JavaScript 倒计时器无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63176225/

相关文章:

javascript - Jquery Ajax加载除某个div之外的整个页面

javascript - Link on Link - 如何在没有父链接激活的情况下激活 JS 代码?

javascript - 如何单击一个元素并在另一个元素中添加文本

Javascript .toLocaleString() 返回错误的月份?

javascript - 如何将表导出为 10000 到 40000 行的 excel

javascript - 从网络应用程序 DYMO labelwriter 进行打印

javascript - 对 &lt;iframe&gt; 应用安全检查

javascript - 一元运算符 +(variable) 的解释与 Number(variable) 相同吗?

Javascript 数组递归

javascript - 在ngRepeat上,制作可编辑表格,如何将数据保存到ngModel