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

为什么我这段代码不能一次吧节点内容清理完,需要点几次按钮才行

<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 mynode=content.removeChild(content.childNodes[i]);

      mynode=null;

  }

}

</script>

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


提问者:善良阿呆 2016-08-03 19:47

个回答

  • qq_兔爷_03299372
    2016-08-03 22:01:18
    已采纳

    因为当你执行了removeChild方法后,content.childNodes.length的值,以及content.childNodes[i]都发生了变化。比如题中有5个子节点,当删除第1个子节点(html),即content.childNode[0]后,原先的第2个子节点(php)已经变成第1个子节点了,conten.childNodes.length也从5变成了4 。所以想一次删除的方法应该是:

    function clearText() {

      var content=document.getElementById("content");

      // 在此完成该函数

      var content_child=content.childNodes;

      var child_length=content_child.length;

      for(var i=0;i<child_length;i++){

          content.removeChild(content_child[0]);

      }

    }


  • 大嘴哈哈
    2016-08-03 23:34:41

    删除代码一定要注意,删除一个后,一般节点就少了一个,所以删除一般是从大到小删除,即:for(var i=content.childNodes.length-1;i>=0;i--){...}