为什么不是逐一删除?

来源:9-14 删除节点removeChild()

Shanemark

2016-04-08 15:16

for(var i=0;i<content.childNodes.length-1;i++){
     var childNode = content.childNodes[i] ;
     content.removeChild(childNode);
      
      
  }

写回答 关注

2回答

  • weibo_这里是哪里Adrian
    2016-04-20 16:16:26

    这个for循环方法中,每次执行删除以后content都发生了变化,比如删除了content数组中的一个元素,content的长度就减一了,后面的元素依次往前顶一个。所以这里i不是逐一删除,肯定是隔了一个,而且你这样写循环次数也会出错。建议这样写:

    var length = content.childNodes.length;
    for(var i=0;i<length ;i++){
         var childNode = content.childNodes[0] ;
         content.removeChild(childNode);
          
          
      }


  • 笑猪猪
    2016-04-08 17:23:15

    第一次循环的后删除了第一个子节点,原本第二的个子节点又变成了第一个,而循环以2 开始了。因此第二次循环这次删除的实际是原来的第三个节点。

    此处content.childNodes[i]应将i变为1.

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题