这个简单的代码应该从 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);
这将传递函数对象 count
和 no
的当前值作为参数,该参数将在调用时传递给 count
。
关于javascript - setTimeout 循环中的数字未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464609/