获取所有自定义DOM属性

时间:2014-03-10 16:13:35

标签: javascript html arrays dom

我正在动态地将DOM属性附加到元素:

i = 0;
document.body['a' + i] = "foo";
document.body['b' + i] = "bar";

有没有办法可以获得我作为数组附加的所有属性?例如:

var allProperties = ['a0', 'b0'];

谢谢!

2 个答案:

答案 0 :(得分:4)

您实际上可以创建一个新的主体对象,并与该对象进行比较以获取浏览器未添加的属性

i = 0;
document.body['a' + i] = "foo";
document.body['b' + i] = "bar";

var el  = document.createElement('body'),
    arr = [];

for (var key in document.body) {
    if (document.body.hasOwnProperty(key) && !(key in el)) {
        arr.push(key);
    }
}

FIDDLE

更加花哨

var el  = document.createElement('body'),
    arr = Object.keys(document.body).filter(function(prop) {
        return !(prop in el);
    });

答案 1 :(得分:0)

将具有固定名称的属性添加到您感兴趣的元素中,然后推送自定义属性

var pushInto = function(element, name, value)
{
    element[name] = value;
    if (element["customProperties"] == undefined)
    {
         element["customProperties"] = [];
    }
    element["customProperties"].push(name);
}

然后你可以这样做:

pushInto(document.body, "name", "value");
document.body["customProperties"]; // ["name"]