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

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

善良阿呆

2016-08-03 19:47

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


写回答 关注

2回答

  • 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-04 12:39:42

    共 1 条回复 >

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

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

    善良阿呆

    懂了,谢谢您的回答

    2016-08-04 12:41:20

    共 1 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题