浏览 5201 次
锁定老帖子 主题:关于removeChild的使用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-12
最后修改:2010-08-12
现在要删除一个父节点下的所有子。 删除节点的操作其实类似于FIFO链表的删除操作,把第一个删除掉,第二个节点会补上作为第一个,第三个会补上作为第二个,如此下去,这样节点是索引会随着删除而改变。所以,如果是顺着删除,删除的顺序会是0,2,4等等,如果你不弄清楚,有时候会被搞的莫名奇妙,跳着删除,是吧,然后余下的就不会被删,而且如果子节点较多,这样操作会出错的,弄半天才恍然大悟原来是倒着删还是顺着删这种细微的差别。正确的做法是应该倒着删除。
下面提供两种方法:
第一种: function removeChild($node){ var childs=$node.childNodes(); for(var i=childs.length-1;i<=0;i--){ $node.removeChild(childs.item(i)); } } 第二种: function removeChild($node){ var node=$node.firstChild; var tmpNode; while(node!=$node.lastChild){ tmpNode=node.nextSibling(); $node.removeChild(node); node=tmpNode; } //记得还要删除最后一个孩子 $node.removeChild($node.lastChild); } 后面那种方法的质量还不如第一种,所以一般选择第一种进行删除一个父节点下所有子节点的操作。 我是来这里学习的,这种讨论对大多数人来说应该属于菜鸟级别的吧,如果里面说错了请多指教,谢谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-22
最后修改:2011-05-22
我习惯用这段代码来删除。
var rc=$node.childNodes.length; for(var k=0;k<rc;k++){ $node.removeChild($node.firstChild); } |
|
返回顶楼 | |
发表时间:2011-05-23
while ($node.childeNodes.length) {
$node.removeChild($node.firstChild); } 其实还不如innerHTML = ''算了 |
|
返回顶楼 | |
发表时间:2011-05-23
习惯 直接 innerHTML="" 的路过~
|
|
返回顶楼 | |