我尝试每 4 秒调用一次我的函数,这样它就会实时递增一个数字。出于某种原因,我不断收到错误。这是我的代码:
<html>
<head>
<title>Recycle Counter</title>
<script type="text/javascript">
function rand(from, to)
{
return Math.floor(Math.random() * (to - from + 1) + from); // Generates random number
}
var num = rand(10000, 100000);
function getNum() // Gets triggered by page load so innerHTML works
{
document.getElementById('counter').innerHTML = num + 7;
setTimeOut(getNum(), 4000);
}
</script>
</head>
<body onload="getNum()">
<div id="counter">
</div>
</body>
</html>
最佳答案
在 getNum
中,您直接调用了 getNum
函数,导致堆栈耗尽。将函数调用 getNum()
替换为函数引用 getNum
:
function getNum() // Gets triggered by page load so innerHTML works
{
num += 7; // Increase and assign variable
document.getElementById('counter').innerHTML = num;
setTimeout(getNum, 4000); // <-- The correct way
}
链接到 setTimeout
的文档.
关于javascript - 在 setTimeout 调用期间超过最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731840/