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

哪里出来问题,必须点击按钮三四次才能完全清除

<!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 childnodes = content.childNodes;

for(var i = 0; i< childnodes.length; i++){
    content.removeChild(childnodes[i]);
    }

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


正在回答

4 回答

1)var arr=content.getElementsByTagName('li');
获取的childnodes对象时一个动态集合对象,而非静态的
什么意思呢,就是当你添加或删除一个元素时,childnodes对象时会立马变化的
2)你在for循环中每次都在计算长度childnodes.length
那么结合1)出现的结果是,你删除一个元素,长度就会少1,那么后面的元素你就永远删除不了
你算下,初始长度为5,你可以删除3个,点击删除1个,点击全部删除

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

再去西藏 提问者

明白了 ,谢谢
2015-09-28 回复 有任何疑惑可以回复我~

请问这个问题您解决了吗,我也是碰到这个问题想不通

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

这里的5指你得见的部分h1,方便测试。

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

你没有排除空白的文本节点,打印一下childnodes.length,可以看到它不是你想象中的5。因为每个h1标签后都有一个空白的文本节点,所以你必须点击按钮三四次才能完全清除


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

再去西藏 提问者

我想到有空白节点,数组长度也有包含空白节点。假如第2个是空白节点,content.removeChild(childnodes[1]不就把空白节点清除了吗
2015-09-28 回复 有任何疑惑可以回复我~
#2

再去西藏 提问者

而且childnodes.length长度是11
2015-09-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪里出来问题,必须点击按钮三四次才能完全清除

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