删除节点removeChild()章节的一些问题!!!

来源:9-14 删除节点removeChild()

guaguaerhao

2016-09-05 15:09

<!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++){
    content.removeChild(content.childNodes[i]);
  }
}
</script>

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



</body>
</html>




为什么我这么写,点击清除节点内容按钮时,点击第一遍没有反应,第二遍减少前面3个li,第三遍减少第四个li,第四遍在减少第五个li,求解释,我该怎么改可以一下子全部删除?大神快出来,

写回答 关注

2回答

  • 楠木楼林3812467
    2016-09-18 23:04:24
    已采纳
    function clearText() {
      var content=document.getElementById("content");
      // 在此完成该函数
      for(var i=0;i<content.childNodes.length;i++){
      if(content.childNodes[i].nodeType!=1){
          continue;
          }
      else{
        content.removeChild(content.childNodes[i]);
          }
      }
    }

    以上可以达到一次清除效果。

    在ie下默认是5个子节点,而其他浏览器默认是11个子节点

    <div id="content">    文本
      <h1>html</h1>       文本
      <h1>php</h1>        文本
      <h1>javascript</h1> 文本
      <h1>jquery</h1>     文本
      <h1>java</h1>       文本
    </div>

    按照你的写法,第一次调用clearText()删除的是文本,而每循环一次,length都在减小,所以一次不能清除所有,建议可以看一下置顶答案,那个讲解的比较详细啦。

    guagua...

    非常感谢!

    2016-09-19 14:21:48

    共 1 条回复 >

  • Comsmelo
    2016-09-05 15:46:08

    浏览器原因读到了空白位置的节点, 你可以在循环的时候判断一下节点属性

JavaScript进阶篇

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

467397 学习 · 21877 问题

查看课程

相似问题