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

有问题吗,点第一下没反应。

<script type="text/javascript">
function clearText() {
  var content=document.getElementById("content");
  // 在此完成该函数
  var x=content.childNodes;
  
  for(var i=0;i<x.length;i++){
      var y=content.removeChild(x[i]);
      y=null;
  }
  
}
</script>

点第二下  1,2 ,5节点清除了,咋回事

提问者:toofirst 2016-03-05 19:31

个回答

  • qq_发条橙子_0
    2016-03-06 11:27:03

    因为childnodes集合是动态改变的,在for循环中i的值不断递增,前面的属性就删不掉了。

    x在第一次循环的时候是这样的[text, h1, text, h1, text, h1, text, h1, text, h1, text]

    i=0 ,text删掉,此时x变成[ h1, text, h1, text, h1, text, h1, text, h1, text]

    i=1,此时X变成[ h1, h1, text, h1, text, h1, text, h1, text]

    ....

    应该明白了吧。为什么要点两次才会删除h