为了账号安全,请及时绑定邮箱和手机立即绑定

JS进阶9-14问题

<body>
<div id="content">
  <h1>html</h1>
  <h1>php</h1>
  <h1>javascript</h1>
  <h1>jquery</h1>
  <h1>java</h1>
</div>

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

<button onclick="clearText()">清除节点内容</button>
</body>

为什么不加if判断节点的类型时,用for循环移除全部节点却不是一次性移除,要点击button数次才能移除全部子节点。

正在回答

1 回答

你所用的for循环是从小索引开始删除,但在每一次删除后,后面的节点会向前移动,因此每个节点的索引也会递减,而循环变量i仍在继续增加,所以下一次删除的节点就与预想的节点的索引不一致,此外,每次删除后,nodes.length会减一,导致一个for循环结束后,仍然剩下一部分节点未删除,所以需要多次调用函数进行删除剩下的节点

1 回复 有任何疑惑可以回复我~
#1

技术的人生 提问者

非常感谢!
2017-07-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

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

进入课程

JS进阶9-14问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信