代码如下:
var childs=parentNode.childNodes();
for(var i=0,len=childs.length;i<len;i++){
//alert(childs.item(i));
parentNode.removeChild(childs.item(i));
}
节点是SVG图形对象的节点,父node下是确定有 8 个子的。问题来了,在删除的时候当 i 等于 4 时就错误了,调试工具显示的是not found,childs.item(...)不是对象或对象不存在。但是注释掉的那行是显示有结果的。我是用IE7调试的。另外,删除的时候,因为是SVG画出来的图形,用IE可以看到这些图像,程序是间隔着删除图像的,如先删除第一个,然后删除第三个等等,不知道为什么会是这样?removeChild这个方法是不是按照节点的排列属性来删除的呢?各位朋友能帮忙看看是什么问题吗?我在此先谢谢了。

解决方案 »

  1.   

    var childs=parentNode.childNodes();
    for(var i=childs.length;i>0;i<len;i--){
    //alert(childs.item(i));
    parentNode.removeChild(childs.item(i));
    }从最后一个倒着删除
      

  2.   

    你删除第一个节点以后childs发生了变化,原本的第2个节点变成了第1个,第3个变成了第2个,所以会产生上述问题,2楼那样倒过来删除就不会出现那些问题
      

  3.   

    多谢二楼和四楼,有一种拨开云雾见青天的感觉。
    这东西就像链表,FIFO。思维太惯性了,万没想到原来是这样。另外,这样操作也可以: var node=parentNode.firstChild;
     var tmpNode;
     while(node!=$node.lastChild){
          tmpNode=node.nextSibling;
          parentNode.removeChild(node);
          node=tmpNode;
          }
         $parentNode.removeChild(parentNode.lastChild);呵呵,多尝试才能加深理解。