`
weick
  • 浏览: 69071 次
  • 性别: Icon_minigender_1
  • 来自: 天堂的隔壁
社区版块
存档分类
最新评论

关于removeChild的使用

    博客分类:
  • js
阅读更多

现在要删除一个父节点下的所有子。

删除节点的操作其实类似于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);
}

后面那种方法的质量还不如第一种,所以一般选择第一种进行删除一个父节点下所有子节点的操作。
   

我是来这里学习的,这种讨论对大多数人来说应该属于菜鸟级别的吧,如果里面说错了请多指教,谢谢。

分享到:
评论
3 楼 崇拜快乐 2011-05-23  
习惯 直接  innerHTML="" 的路过~
2 楼 int08h 2011-05-23  
while ($node.childeNodes.length) {
    $node.removeChild($node.firstChild);
}
其实还不如innerHTML = ''算了
1 楼 g00000 2011-05-22  
我习惯用这段代码来删除。

var rc=$node.childNodes.length;
for(var k=0;k<rc;k++){
  $node.removeChild($node.firstChild);
}

相关推荐

Global site tag (gtag.js) - Google Analytics