作家
登录

JavaScript 存在陷阱 删除某一区域所有节点

作者: 来源:www.28hudong.com 2013-03-30 01:36:46 阅读 我要评论

比较简单的,例如:有一区域<div id="newbody" ></div>,现要求删除其中所有节点。相信很多人会这样写: 复制代码 代码如下: var divpanel = document.getElementById("newbody"); var controlinfo= divpanel.childNodes; for(var index = 0;index < controlinfo.length ;index++) {   divpanel.removeChild(controlinfo[index]); } 咋一看,是啊,对啊,这样很正确啊,一个一个遍历,最后全部删除。但是,仔细想想,每当删除一个节点后,controlinfo.length就会变小,这样下去是不能全部删除的——存在Bug。那么该如何改进呢?已经很清楚了,既然从开头Start不行,那我们就从结尾Start,完全正确,如下: 复制代码 代码如下: var divpanel = document.getElementById("newbody"); var controlinfo= divpanel.childNodes; for(var index = controlinfo.length - 1;index >= 0 ;index--) {   divpanel.removeChild(controlinfo[index]); } 调试,Very Good! 这种陷阱不只是在JavaScript中才会碰到,基本上所有的语言,如C#、Java等,我们都会碰到这样的问题,有时会因为这样的问题而浪费很多的时间。很早就已经知道了这个问题,不过总是太相信自己的记忆,而没有好好记录,现在特记录下来,警示自己,同时也与大家分享。

  推荐阅读

  JavaScript 数据元素集合与数组的区别说明

其中getElementsByName(name)方法是获取页面中所有具有name属性的元素,但这个方法在IE与标准浏览器中所取到的内容不一样。在IE中getElementsByName(name)方法所取到的元素是其本身就自带有name属性也就是form表单>>>详细阅读


本文标题:JavaScript 存在陷阱 删除某一区域所有节点

地址:http://www.17bianji.com/kaifa2/JS/26452.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)