问答详情
源自:9-14 删除节点removeChild()

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

<!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>


提问者:再去西藏 2015-09-28 16:31

个回答

  • pardon110
    2015-09-28 17:35:52
    已采纳

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

  • BEMOVE
    2015-11-03 09:27:13

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

  • pardon110
    2015-09-28 17:37:05

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

  • pardon110
    2015-09-28 16:41:35

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