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

为什么不能一次全清

<!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 k=0;

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

  var a=content.childNodes; 

  for(var i=0;i<a.length;i++){

 content.removeChild(a[i]);

 //k++;

 }

// document.write(k);

}

</script>


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




</body>

</html>


正在回答

4 回答

他子节点长度是随着FOR循环不断变化的 可以在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");
  var x = content.childNodes.length
    var num =0
  for (i=0;i<x;i++){
     content.removeChild(content.firstChild);
      num = num+1
     console.log(num)
}
 }
</script>

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



</body>
</html>

这样就可以实现一次全清

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

当i=3的时候  子节点的长度就只有2,循环就不会继续执行了

0 回复 有任何疑惑可以回复我~
for(var i=0; i<content.childNodes.length;){
      content.removeChild(content.childNodes[i]);
  }

如果非要用for的话,这样就可以了。不需要对i加一,其实这个用while更简单,直接判断子节点个数有没有到0就可以。

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

看了下置顶说不能用length作为判断条件 所以做了修改  

function clearText() {

//var k=0;

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

  var a=content.childNodes; 

  var k=a.length;

  for(var i=0;i<k;i++){

 content.removeChild(a[i]);

 a[i]=null;

 //k++;

 }

// document.write(k);

}

然而还是不行  求大神解惑

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

举报

0/150
提交
取消

为什么不能一次全清

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