在写通过元素 class 属性的时候遇到的 ie6、ie7在处理 getAttribute() 时与firefox 和 chrome的区别
<div>
<p></p>
<p></p>
<div>
<h3 class="items"></h3>
<p></p>
<p class="item" title="p元素" id="pi"></p>
<p></p>
<p></p>
</div>
<div>
<form>
<p></p>
</form>
</div>
</div>
js代码如下
<script type="text/javascript">
function getElementByClass(name){
var element = document.body.getElementsByTagName('*');
var i=j=0;
var arr= new Array();
for(i=0;i<element.length; i++){
//document.write(element[i].className + ' ');
document.write(element[i].getAttribute('class') + " ");
if(element[i].getAttribute('class') == name){
arr[j] = element[i].nodeName;
}
}
return arr;
}
var p='item';
var str = getElementByClass(p);
alert(str);
</script>
在使用getAttribute('class')时,在firefox 、chrome 、safari中都可一的到正确的结果,即可以的到 p 元素,但是ie6 、 ie7 不能得到class属性的值。ie8修复了这个bug,可以使用getAttribute('class')得到正确的结果。
把getAttribute('class')改为 getAttribute('className')时在ie6 、ie7 下可以显示正确,但是在firefox 、chrome 、safari中不正确。当我用//document.write(element[i].className + ' ');时可一在以上浏览器中正确显示。所以我认为为了减少浏览器差异给编程带来影响,使用element[i].className ,即属性的方式更好。