关于 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 ,即属性的方式更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值