關於 ie getAttribute() 的實現bug

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章