问答详情
源自:9-14 删除节点removeChild()

关于本节的两个小问题,求解答!!!

问题一:

            为什么删除代码content.childNodes[0]可以一次性删除所有节点,而                                       content.childNodes[i]却不行呢?

问题二:  

for (var i=0;i<content.childNodes.length;i++){

       var x = content.removeChild(content.childNodes[i]);

       document.write(x.innerHTML + "<br>");//********//

   }

为什么这部分代码可以一次性删除所有节点,而少了//*******//这行代码却不行呢?


提问者:慕少8622884 2016-01-10 16:39

个回答

  • Qulasister
    2016-01-28 15:49:10

    content.childNodes[0]获取的是整个子元素的集合,所以可以一次性删除。content.childNodes[i]获取到的是某一个子元素。

  • 慕斯卡9402741
    2016-01-16 12:13:13

      for(var i=0;i<n;i++){
          var x = content.removeChild(content.childNodes[0]);
          //为什么是用content.childNodes[0]而不是用content.childNodes[i]呢?
      }

    第一次循环删除了第一个节点,而content.childNodes的长度也随之改变,之前第二个下标为[1]元素就成了下标为[0]的元素。所以每执行一次删除,content.childNodes的下标都会进1。

    你的第二个问题没看懂。