2011-07-20 22 views
3

我正在嘗試使for循環取決於objNumber變量。它使許多對象和不同變量的名稱他們,就像這樣:如何越來越多地更改循環內的變量名稱

for (var i = 1; i <= objNumber; i++){ 
    var myElement = new Element('div', {id: 'slot'+i, class: 'slot'}); 
    var myObject+i = new myClass 
} 

我想這樣做,這樣我可以跟蹤所有對象的名稱,並可以很容易地引用它們。

每個myObject都會創建另一個「子」對象。如果我保留所有具有相同編號的對象,那麼我可以跟蹤所有對象。

這是最好的方法嗎?還是不可能?

+2

這正是數組是。 – Pointy

+1

你可能應該使用一個數組,但爲了將來的參考,你可以在JavaScript中使用變量變量,如下所示: 'var i ='foo';窗口[我+「酒吧」] =我; foob​​ar ==「foo」' – circusbred

回答

4

只需使用一個數組:

var myObjects = []; 
for (var i = 1; i <= objNumber; i++){ 

     var myElement = new Element('div', {id: 'slot'+i, class: 'slot'}); 
     var myObjects[i] = new myClass 
} 
0

你可以使用eval語句來做到這一點,但更好的方法是使用一個關聯數組,其中關鍵字爲變量名。這樣做,您可以輕鬆地遍歷您創建的對象,並創建更易讀的代碼。

0

最好的方法是使用一個數組:

var myArray = new Array(); 
for (var i = 0; i < objNumber; i++){ 

     var myElement = new Element('div', {id: 'slot'+i, class: 'slot'}); 
     myArray.push(new myClass()); 

} 

另外,您可以使用以下方法:

var myCollectionObj = {}; 
for (var i = 1; i <= objNumber; i++){ 

     var myElement = new Element('div', {id: 'slot'+i, class: 'slot'}); 
     myCollectionObj["myObject"+i] = new myClass(); 

} 
+0

感謝科林,最後一個反應非常好,我需要! – Thaiscorpion