— Designsor

Archive
Tag "specified"

思考一下如果我想获得下面这个容器的attributes属性长度如何办到?

<div style=”display:none” data=”test1″ data2=”test2″ id=”test”>test</div>

恩,我们可以用get方法直接取,但是如果我不知道data,data2甚至不知道他又style,我们怎么办呢?

一般思路都是会去遍历这个节点了。

document.getElementById(“test”).attributes["data"];

恩。这样也可以取到你想要的。可是如果真的放入循环里,IE下的话你可真的就虾米了。我们来查看下Attributes.length这个属性在IF下和FF下到底有什么区别。

FF:Attributes。length:4; OK是我们想要的4个节点属性style,data,data2,id

IE:Attributes.length:110;NB啊。。。居然多达100多个。

好吧,通过遍历我得知那多出来的100多个属性都是什么onclick啊,onmouseover等等等等的默认属性,IE把他们也都算进去了。我靠,那怎么办。我们该如何获取兼容浏览器的,一个未知节点属性的元素,都存在什么自定义节点属性呢?

后来在javascriptkit里找到了答案:

http://www.javascriptkit.com/dhtmltutors/domattribute2.shtml

看下面代码:
var totalattributes=0

for (i=0;i<document.getElementById(“test”).attributes.length;i++){

//if attribute is user defined

if (document.getElementById(“test”).attributes[i].specified)

totalattributes++

}
一目了然了。

Read More