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

我这段代码为什么清除的时候还要点多次?按理说点一次按钮,for循环就开始到结束了,为什么要点多次?

<!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(i=0;i<content.childNodes.length;i++){

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

    //   document.write("被删除的内容:"+c);

  }

  

}

</script>

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

</body>

</html>


正在回答

5 回答

循环的时候从后往前删,就能点一次全部删除

function clearText() {

  var content=document.getElementById("content");

  // 在此完成该函数

  var nodes=content.childNodes;

  for(var i=nodes.length-1;i>=0;i--){

      

      content.removeChild(nodes[i])

      

  }

  

  

}


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

for外面套while循环就行

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

你用for循环,如果你不是i--往后面删除的话,是i++这个方法的话,当i=0删除的是html,再循环一次,这时删除的就是javascript了,因为html不在了,所以i=1  ,javascript的下标就是1了

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

循环的时候从后往前删,就能点一次全部删除

function clearText() {

  var content=document.getElementById("content");

  // 在此完成该函数

  var nodes=content.childNodes;

  for(var i=nodes.length-1;i>=0;i--){

      

      content.removeChild(nodes[i])

      

  }

  

  

}


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

因为每for循环一次,数组的下标就会发生改变,i= 0时,删除content[0],html被删,此时content[1]时JavaScript,而不是php


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

z9Two 提问者

谢谢,谢谢,是我没有彻底理解removeChild的含义,remove掉,此时数组中的角标是会重新排序的,就会漏掉当前的[0],真是谢谢你
2018-08-25 回复 有任何疑惑可以回复我~
#2

qq_长剑Zlf古风君疯狂剑客_03964233

你用for循环,如果你不是i--往后面删除的话,是i++这个方法的话,当i=0删除的是html,再循环一次,这时删除的就是javascript了,因为html不在了,所以i=1 ,javascript的下标就是1了 谢谢大神,通过你的回答我理解了
2018-09-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我这段代码为什么清除的时候还要点多次?按理说点一次按钮,for循环就开始到结束了,为什么要点多次?

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