Javascript 调用带超时的函数(params)时递归过多

Javascript 调用带超时的函数(params)时递归过多,javascript,ajax,dom,Javascript,Ajax,Dom,我在使用递归函数时遇到了一个问题。我在firebug中得到了错误 太多的递归 这是我的javascript代码: var contentPc = "list"; waitForBody(contentPc); function waitForBody(id){ var ele = document.getElementById(id); if(!ele){ window.setTimeout(waitForBody(contentPc), 100); }

我在使用递归函数时遇到了一个问题。我在firebug中得到了错误

太多的递归

这是我的javascript代码:

var contentPc = "list";
waitForBody(contentPc);
function waitForBody(id){
    var ele = document.getElementById(id);
    if(!ele){
        window.setTimeout(waitForBody(contentPc), 100);
    }
    else{
        //something function
    }
}

我怎样才能解决这个问题?谢谢您的回答。

假设您的DOM中没有
id=“list”
元素。这意味着您最初的
waitForBody
调用将在这里结束:

window.setTimeout(waitForBody(contentPc), 100);
这将调用
waitForBody(contentPc)
,同时为
setTimeout
构建参数列表。然后再次返回到
setTimeout
调用,但又多了一个堆栈级别。我想你的意思是:

window.setTimeout(function() { waitForBody(contentPc) }, 100);

因此,下一个
waitForBody
调用被延迟了一点。

很高兴看到我对JS语法的猜测是正确的——但考虑到你的回答,我的答案毫无意义:)