2011-10-30 10 views
1

divのid属性がclass="characteristic"の名前のオブジェクトをいくつか作成しようとしています。どのように私は名前のIDを取得するのですか?要素のid属性の名前を持つオブジェクトを作成する

window.onload = function() { 
    var characteristicElements = document.getElementsByClassName("characteristic"); 
    for (var i = 0 ; i < characteristicElements.length ; i++) { 
     var characteristicElements[i].getAttribute("id") = { set: false, val: 0, unn: 0 }; 
    } 
}; 

答えて

3

あなたはオブジェクトを使用して、その後、マップを作成し、プロパティ名としてIDを使用する必要があります。

var objects = {}; 

var characteristicElements = document.getElementsByClassName("characteristic"); 
for (var i = 0 ; i < characteristicElements.length ; i++) { 
    objects[characteristicElements[i].id] = {'set': false, val: 0, unn: 0 }; 
} 

あなたはそれがオブジェクトリテラルのキーワードであるため、引用符でsetを配置する必要があります私の知る限り。私は間違っている可能性があります。 IE8以前ではgetElementsByClassNameは利用できません。

私はMDN JavaScript Guide - Working with Objectsを読むことをお勧めします。

+0

ありがとうございますフェリックス:)。 – mtl

2

characteristicElements[i].getAttribute("id")は文字列です。あなたがしていることはvar "foo" = "bar";のようなものですが、意味がありません。あなたがしたいことは実行可能ですが、evalだけで、evalは悪です。あなたが別のオブジェクト内のオブジェクトを置く場合、それははるかに簡単になります:

window.onload = function() { 
    var characteristicElements = document.getElementsByClassName("characteristic"); 
    var objects = {}; // New empty object 
    for (var i = 0 ; i < characteristicElements.length ; i++) { 
     objects[characteristicElements[i].getAttribute("id")] = { set: false, val: 0, unn: 0 }; 
    } 
}; 

オブジェクト[「foo」が] objects.foo、ちょうど別の表記と同じです。

+0

その説明svintoをありがとう。私はこれを試してみる。 – mtl

関連する問題