思考一下如果我想获得下面这个容器的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++
}
一目了然了。
Comments