2012-02-14 146 views
0

Alrighty ......所以有幾件事情會在這裏。首先,我試圖創建一個名爲myScrolls的全局對象。其次,我試圖在jQuery加載函數中設置該全局對象的值。第三,我試圖訪問加載對象外的myScrolls對象。的Javascript範圍循環

我錯過了什麼? 'for'循環的範圍有限嗎? 感謝

myScrolls=new Object(); 

$(window).load(function() { 

    var projectCount = 5; 

    for (var i=0;i<=projectCount;i++) 
    { 
     var singleProject = 'project_' + i; 
     myScrolls[singleProject] = new iScroll(singleProject, horizontalPreferences); 
    } 

}); 

console.log(myScrolls); 
+0

參數'horizo​​ntalPreferences'尚未被聲明或初始化,並將引發一個引用錯誤。另外,你不會描述你看到的錯誤。除此之外,您不應該看到任何錯誤。 'myScrolls'是一個對象的引用。 – RobG 2012-02-14 23:50:51

回答

4

你試圖讀取對象load回調執行之前。

+0

我認爲這是問題的一部分,但它仍然如果我把'了'load'回調的內部console.log'不起作用。但是,如果console.log放在'for'循環中,它也可以工作。 – coryetzkorn 2012-02-14 23:42:49

+0

它是如何工作的?怎麼了? – SLaks 2012-02-14 23:49:58

+0

啊......知道了。現在正在工作。謝謝! – coryetzkorn 2012-02-14 23:54:42

0

那$(窗口).load()函數等待,直到窗口加載後,因爲控制檯日誌是不是也該回調,其實際獲得的功能確實之前執行。因此,在控制檯語句運行時,它實際上不會被填充。

myScrolls=new Object(); 

$(window).load(function() { 

    var projectCount = 5; 

    for (var i=0;i<=projectCount;i++) 
    { 
     var singleProject = 'project_' + i; 
     myScrolls[singleProject] = new iScroll(singleProject, horizontalPreferences); 
    } 

    console.log(myScrolls); //this was out of scope when outside of $(window).load() 

}); 
+0

嗯..這仍然無法正常工作。但是,如果'console.log'被放置在'for'循環中,它會執行。如果整個'for'環法律程序中'的console.log(myScrolls)'之前執行? – coryetzkorn 2012-02-14 23:47:45

+0

是的,他們應該。 – Kristian 2012-02-20 23:16:04