Yan*_*lan 1 recursion jquery settimeout
我试图在客户端每秒递增一个值,使用jquery
这是做了什么:
<script type="text/javascript">
$(document).ready(function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
setTimeout(increment(),1000)
})
</script>
Run Code Online (Sandbox Code Playgroud)
这没有按预期工作,我收到"太多的递归"错误.
有什么想法吗?
Rus*_*Cam 12
尝试
$(document).ready(function () {
function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
setTimeout(increment,1000);
};
increment();
});
Run Code Online (Sandbox Code Playgroud)
顺便说一下,setInterval()
在设定的时间间隔内重复调用一个函数,而不是递归地调用一个函数setTimeout()
$(document).ready(function () {
var interval = setInterval(increment,1000);
});
function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
}
Run Code Online (Sandbox Code Playgroud)
increment()
是对增量的调用,而不是对它的引用.当您尝试将其设置为再次调用增量时,您实际上是立即再次调用它.如果它返回,它的返回值将传递给setTimeout
,但它永远不会,因为它只是一次又一次地调用自己,直到你得到一个深度递归错误.
解决方案只是删除括号,以便您引用函数增量,而不是调用它.