关于 ie getAttribute() 的实现bug

来源:互联网 发布:电影院票房数据 编辑:程序博客网 时间:2024/05/17 23:44

在写通过元素 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 ,即属性的方式更好。

原创粉丝点击