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

为什么我第一次点击按钮没有反应,当点击第二次的时候会同时清除三个节点。。。求解答。。

正在回答

10 回答

这里你如果只想将第一个移除的话就没必要循环,这个一循环就将所有移除了。

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

第一次没有反应,是因为循环移除了所有<text>结点,不是<h1>。

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

2呀Jimmy

为什么删除的是text节点呢,text节点和元素节点不都是子节点吗,并且第一次点击之后接下来的点击不是全部删除节点呢
2014-08-25 回复 有任何疑惑可以回复我~

你代码没有问题。测试过了

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

  var length = content.children.length;

 for(var i=0;i<length;i++)

变量名换下试试


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

将i的值改为1

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

JS是不能保留删掉的数据的,循环


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

content.childNodes.length值在变小  在for循环里面设置断点测试一下就知道了 

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

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

content.childNodes.length值在变小,导致只循环3次

并且循环中

removeChild[0]不是removeChild[i] 

上个代码,用了children,不会选择空文本,领会一下吧

<!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");
  //console.log(content.childNodes.length);
  // 在此完成该函数
  var length = content.children.length;
  //console.log(content.children.length);
  for(var i=0;i<length;i++)
  {
    var x=content.removeChild(content.children[0]);
  }
}
</script>

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



</body>
</html>


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

阿斯蒂芬_0002

说得好
2014-08-21 回复 有任何疑惑可以回复我~

代码感觉没啥问题


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

跟我遇到的情况一样 我估计是他们服务器的问题吧

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

举报

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

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

进入课程
意见反馈 帮助中心 APP下载
官方微信