2012-10-12 137 views
0

代碼:遞歸函數:我在哪裏錯了?

isDomLoaded = $(function() { 
    setTimeout(function() { 
     if (renderFinished) { 
      renderSocial(fotoProssima); 
     } else { 
      isDomLoaded(); 
     } 
    }, 300); 
}); 

它說:isDomLoaded is not a function

+0

也許有一些我缺少的上下文,但爲什麼你要將函數聲明作爲參數傳遞給$函數,然後將**返回給isDomLoaded的值**。 –

+0

因爲你把它轉換成一個jQuery對象... – Shmiddty

+0

你爲什麼要這麼做呢?你不能只使用'$(function(){...});'?只有當DOM完全加載時,纔會調用該函數... – Shmiddty

回答

11

那是因爲它不是一個功能。它是一個jQuery對象。

你所需要的可能是:

isDomLoaded = function() { 
    setTimeout(function() { 
     if (renderFinished) { 
      renderSocial(fotoProssima); 
     } else { 
      isDomLoaded(); 
     } 
    }, 300); 
}; 

如果你想運行它時,DOM是準備那麼做,你聲明函數後:

$(window).load(isDomLoaded); 

不過,我想你真正需要的是擺脫isDomLoaded功能,只需使用下列內容:

$(document).ready(function(){ 
    renderSocial(fotoProssima); 
}); 
+0

呃......那麼我怎樣才能調用這個函數,第一次執行它呢? – markzzz

+0

看我上面的代碼 –

+0

好的,但它不會自動執行第一次... – markzzz

1
function isDomLoaded(){ 
    //code 

    //recursive call 
    isDomLoaded(); 
}