2011-07-20 23 views
3

objNumber変数に応じて、forループを作成しようとしています。ループ内の変数名を徐々に変更する方法

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';ウィンドウ[i + "bar"] = i; 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

最後のalernativeが私の必要なものに最適です。 – Thaiscorpion

関連する問題