2011-10-21 31 views
1

好工作,所以我固定我與DIV最後一個錯誤和所有..jQuery的 - 與陣列

行,所以我javascript文件的最頂端...我有

$(function() { 
    var games = new Array(); // games array 
}); 

,然後在一個新的功能,我有:var gamesLgth = games.length;

但是當我運行它,我得到這個:Uncaught ReferenceError: games is not defined

當我奇怪,因爲我在開始的時候initalized它... ...

+0

「然後在一個**新功能**我有......」這可能是問題;當你用'var'定義一個變量時,它只會被當前函數使用。 – JCOC611

+0

看到這一個: http://stackoverflow.com/questions/851138/jquery-please-explain-to-me-closure-variable-context – dani

+0

請顯示代碼包括新功能。 – xdazz

回答

1

games超出範圍。您需要將它存儲在某個地方,以便您的其他功能可以訪問它。

例如,這將使您的變量全局。

var games; 
$(function() { 
    games = new Array(); // games array 
}); 

$(function() { 
    var gamesLgth = games.length; 
    console.log(gamesLgth); 
}); 
+0

的課程!我記得在Java中使用全局變量等。它回到我身邊。謝謝。我知道了。我知道了。 Muchas gracias,傳感器。 – nn2

0

您將其初始化爲單獨函數的局部變量。您需要將其設置爲全局,或者將其從函數傳遞到函數作爲參數以便能夠訪問它。

+0

如何讓它成爲全球? – nn2

1

通過聲明一個function內的變量,你已經作用域的變量是功能,這意味着該變量games僅僅是函數中使用。

$(function() { 
    var games = new Array(); // games array 

    ... 


    var gamesLength = games.length; // works fine 
}); 

但是這下面的例子將不會:

$(function() { 
    var games = new Array(); // games array 
}); 

$(function() { 
    var gamesLength = games.length; // won't work - im in a different scope 
}); 
0

試試這個;

var games = []; 

代替

var games = new Array(); 

,並確保有關遊戲範圍。

+0

兩者都是相同的,但你對範圍的東西:) – Jamiec

+0

是的,但我不希望遊戲陣列再次新。 – nn2

0

我會繼續和代碼寫出來給你:

var games; 
$(function(){ 
    games = new Array(); 
    ... 
}); 
$(function(){ 
    games.length; // Which would be zero 
}); 
0

你在一個函數範圍初始化的「遊戲」,這是不可用$(函數的邊界之外(){... });