setTimeout堆栈溢出.. $(文件)。就绪(函数(){ counterFN();
var theCounter = 1; function counterFN() { $(".searchInput").val(theCounter); theCounter++; setTimeout(counterFN(),1000); } }); </script> </head> <body> <input type="text" class="searchInput" /> </body> </html>
答案 0 :(得分:4)
您正在调用counterFN并将其返回值设置为在1000毫秒后运行。由于您没有返回函数,因此您可能不希望这样做。
你可能想要:
setTimeout(counterFN,1000);
更好的是,不要递归,并对不会改变的事情做更多的缓存:
var theCounter = 1;
var input = $(".searchInput"); // Cache this
function counterFN()
{
input.val(theCounter);
theCounter++;
}
setInterval(counterFN, 1000);
答案 1 :(得分:1)
改变这个......
setTimeout(counterFN(),1000);
到此:
setTimeout(counterFN,1000);
否则,您尝试调用counterFN
并为返回设置超时,而不是为函数本身设置超时 - 但是因为它在返回之前尝试调用自身(在原始代码中),这会产生无限循环的调用,导致堆栈溢出。