2012-03-25 47 views
0

我想調用我的_create裏面的cycle_pages,但我遇到了一些範圍問題。一旦我調用setTimeout,我就改變到窗口的範圍,而不是我的匿名函數。我嘗試了一些東西。最合乎邏輯似乎是jQuery UI小部件創建範圍問題

function cycle_pages(){ 
    console.log("hello"); 
    change_page(1); 
    setTimeout(function (self) { 
     self.cycle_pages(); 
    }, 1000); 
} 

但我也試過

function cycle_pages(){ 
    console.log("hello"); 
    change_page(1); 
    setTimeout('cycle_pages()', 1000); 
} 

我已經試過移動功能爲全球範圍內的變化,但導致change_page()是超出範圍。

任何提示?充分貼在這裏http://jsfiddle.net/vn7Re/1/

回答

0

setTimeout功能沒有提供任何參數,它被調用,所以你可能需要更多的東西是這樣的:

function cycle_pages() { 
    var self = this; 
    change_page(1); 
    setTimeout(function() { 
     self.cycle_pages(); 
    }, 1000); 
} 
+0

我應該添加自我=這是之前宣佈的。好眼睛。我現在正在測試這個版本 – Jake 2012-03-25 20:49:54

+0

我認爲我的代碼是非常不正確的做法,我已經將自己置於一個不可修復的角落。我要重新設計,看看我是否仍然有這個問題。 – Jake 2012-03-25 20:53:34

+0

我的代碼肯定要重寫。我把所有東西都移到了小部件中更合乎邏輯的地方。現在我有了我的第一個jquery UI小部件。當我重做其他事情時,你的回答絕對回答了這個問題。現在這個問題屬於其他500個問題。我應該意識到我在全局範圍內做了錯誤的事情,以至於遇到了我遇到的問題。 – Jake 2012-03-25 21:37:21

1

你可以讓這個更簡單:

function cycle_pages(){ 
    console.log("hello"); 
    change_page(1); 
    setTimeout(cycle_pages, 1000); 
} 

你不需要在setTimeout中創建一個匿名函數。