在寫通過元素 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 ,即屬性的方式更好。