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

关于许多同学的正序倒叙循环问题

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>


<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");

  // 在此完成该函数

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

  {

      content.removeChild(content.childNodes[i]);

  }

  

}

</script>


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




</body>

</html>

以上是正序循环的代码 但是会发现会留下第二个和第四个节点删不尽

正在回答

4 回答

不应该在循环中使用length作为循环结束的条件,因为在循环中length会变的。每次循环结束 i++ length--,从循环来考虑,相当于删除了两个节点,然而实际上只删除了一个节点。这就是这个问题bug的来源

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

慕UI8290743

而倒叙可以成功,是由于只使用length作为循环变量初始值,而不是在循环过程中多次使用。这是这种写法没有bug的原因
2019-05-03 回复 有任何疑惑可以回复我~

非常感谢,困扰很久的问题总算解决了

0 回复 有任何疑惑可以回复我~

我试了正序 和你的代码一样 是可以删完的

0 回复 有任何疑惑可以回复我~

是因为当循环开始 删掉第一个节点时 <h1>php</h1>本来在第二个节点变成了第一节点,但下一轮循环i已经加一了,所以会跳过这个节点没法删除,  <h1>jquery</h1>同理。所以参考答案用了倒叙循环

8 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于许多同学的正序倒叙循环问题

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