2011-11-23 61 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