使用超时调用函数(params)时递归过多

时间:2011-11-23 07:06:32

标签: 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);
    }
    else{
        //something function
    }
}

我怎么能解决这个问题?谢谢你的回答。

1 个答案:

答案 0 :(得分:9)

据推测,您的DOM中没有id="list"元素。这意味着您最初的waitForBody电话会在此处结束:

window.setTimeout(waitForBody(contentPc), 100);

这将在构建waitForBody(contentPc)的参数列表时调用setTimeout。然后你再次回到setTimeout再次呼叫,但再深一个堆栈级别。我想你的意思是这样说:

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

以便下一个waitForBody来电延迟一点。