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

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

toofirst

2016-03-05 19:31

<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节点清除了,咋回事

写回答 关注

1回答

  • 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

JavaScript进阶篇

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

468195 学习 · 21891 问题

查看课程

相似问题