使用元素id属性创建名称对象

时间:2011-10-30 08:39:45

标签: javascript

我正在尝试创建一些对象,其名称是具有class="characteristic"的div的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 };
    }
};

2 个答案:

答案 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 };
}

Afaik你必须将set放在引号中,因为它是对象文字中的关键字。我可能错了。另请注意,getElementsByClassName在IE8及以前版本中不可用。

我建议您阅读MDN JavaScript Guide - Working with Objects

答案 1 :(得分: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 };
    }
};

objects [“foo”]与objects.foo相同,只是另一种表示法。