2011-11-23 60 views
4

我有一个问题,当递归function.i'm得到错误的萤火太多的递归调用时调用函数(PARAMS)与超时

太多的递归调用

这是我的javascript代码:

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

我该如何解决这个问题?感谢您的回答。

回答

9

推测,您的DOM中没有id="list"元素。这将意味着您最初的waitForBody调用将在这里结束:

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

,这将调用waitForBody(contentPc)在构建参数列表setTimeout。然后你又回到setTimeout再次调用,但又有一个堆栈层次更深。我想你的意思是说这个:

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

使下waitForBody调用将被延迟一点点。

+1

很高兴看到我对JS语法的猜测是正确的 - 但我的回答是毫无意义的给你:) –

+0

啊你真正的男人.... hihihi ..感谢您的回答... – viyancs