JavaScript操纵DOM纠错两则

浏览器的差异,对dom本身内部机理的不熟悉都有可能产生错误。今天又用错了两个地方。

1、关于class和className
class属性在HTML DOM中扮演很重要的角色,css和DTHML都可能大量用到。但javascript的浏览器差异性仍然存在。动态设置一个element的属性:element.setAttribute("class", vName);语句在firefox中是行的通的,可是IE内核的浏览器却不认识"class",而得改用"className",同样,firefox也不认识"className"。所以常用的方法是二者兼备:
   element.setAttribute("class", vName);
   element.setAttribute("className", vName);  //for IE

2、删除某个节点的所有子节点
这“某个节点”可能使用getElementById或其他方法得到的。删除方法如下:
   while(element.hasChildNodes()==true){
        element.removeChild(element.childNodes[0]);
   }
简简单单两句话,看似没什么了不起。之前我用for循环(有经验的人一看就不该用),先用element.childNodes获得element的子元素集,然后获取该元素集的数组长度,在进行循环删除。当时就发现元素多了一个(55成了56),没在意。后来发现删除到第28个元素就退出循环了,出现了循环中的“奇迹”。想想,莫非childNodes里包括element本身?且DOM是树结构,又采用中序遍历的算法?结果到第28个后把element自己给删掉了,也就什么都没了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值