关于在js中使用for循环删除节点


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

1. 删除该节点的内容,先要获取子节点。

2. 然后使用循环遍历每个子节点。

3. 使用removeChild()删除节点。

 

问题在于循环遍历时习惯性的用了下面这样的办法

function clearText() {
  var content=document.getElementById("content");
  // 在此完成该函数
  for(var i=0;i<content.childNodes.length;i++)
  {
      content.removeChild(content.childNodes[i]);
      
  }
  
}

结果是无法删除干净的,会剩下php 和jqurey

原因是在遍历时因为删除了子节点,content.childNdes.length值已经减小,影响了遍历结果。

合适的循环遍历办法应该是

function clearText() {
  var content=document.getElementById("content");
  for(var i=content.childNodes.length-1;i>=0;i--){
     content.removeChild(content.childNodes[i]);
  }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM