javascript - setTimeout 循环中的数字未更新

标签 javascript

这个简单的代码应该从 0 计数到无穷大,并且应该每 100 毫秒显示下一个数字。问题是,当我在 chrome 中打开它时,数字停留在 0。有人可以解释为什么会发生这种情况以及我做错了什么吗?

function count(a)
{
    var no=a;
    no++;

    document.getElementById("num").innerHTML=no;
    setTimeout("count(no)",100);
}
<html>
<head>
  <meta charset="utf-8"/>



</head>
<body onload="count(-1);">

  <div id="num"></div>

</body>
</html>

最佳答案

如果将字符串传递给setTimeout,它将作为全局范围内的代码文字执行。在全局作用域中,变量 no 不存在,因为它是作用域为函数 count 的变量。

您需要这样传递回调:

setTimeout(count, 100, no);

这将传递函数对象 countno 的当前值作为参数,该参数将在调用时传递给 count

关于javascript - setTimeout 循环中的数字未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464609/

相关文章:

javascript - 如何在 Javascript 中使用循环显示对象的特定部分

javascript - 如何在不扭曲 <div> 内的组件的情况下制作悬停状态 HOC?

javascript - 获取 Twitter 分享数的网址是什么

javascript - body 和图像的大小差异

javascript - 提交表格并将其发布到主页

javascript - 获取委托(delegate)选择器的索引

php - jQuery/ajax 没有更新页面上的 div

javascript - 简单的 Kendo 网格单元格模板以无包装方式显示单元格数据,结尾为 '...' 和一个按钮

php - 为什么 php 表单生成器类没有运行?

javascript - 获取 DropdownItem 的 Label 或值以将文本值设置为 DropdownToggle