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

JavaScript相关 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(var i=0;i<content.childNodes.length;i++){
    var cn=content.childNodes[i];  
    content.removeChild(cn);
  }
}
</script>

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



</body>
</html>
<!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=content.childNodes.length-1;i>=0;i--){
     var childNode = content.childNodes[i];
     content.removeChild(childNode); 
  }
}
</script>

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



</body>
</html>

为什么第二个能全部清除 而第一个不能啊

正在回答

1 回答

使用for循环清除节点例如:如下代码会导致每次点击都只能清除部分节点。这是因为每次清除节点时childNodes的长度(即tt.length)都缩短1,而每次I增大1,这样会导致i的值还没有达到最初的tt.length时循环会比提前结束;
var tt=content.childNodes;
 for(i=0;i<tt.length;i++);{
     content.removeChild(tt[1]);
 }

简述:正序删除与倒序删除的差别



来自:MotoDoctor的解释。仅供参考

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

maybe丶xg

转载。
2017-01-05 回复 有任何疑惑可以回复我~
#2

一家之煮 提问者

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

举报

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

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

进入课程

JavaScript相关 for循环

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