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

为什么一开始要按两下才开始删除节点,而且一下删除两个。后面就是按一下删除一个了?

<script type="text/javascript">

function clearText() {

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

  // 在此完成该函数

  for(i=0;i<content.childNodes.length;i++){

      var cinchild = content.childNodes[i];

      content.removeChild(cinchild);

      

  }

  

}

看完这位大师的讲解,小的还是不理解,为什么第一次做的时后只会删去空值,而不是全部删除呢?

http://img2.mukewang.com/5f26cae200015e3611840406.jpg

提问者:__5yu__ 2020-08-02 22:18

个回答

  • weixin_慕九州1422659
    2021-03-24 17:03:50

    <script type="text/javascript">

    function clearText() {

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

      // 在此完成该函数

      for(i=1;i<content.childNodes.length;i++){

          var cinchild = content.childNodes[i];

          content.removeChild(cinchild);

          

      }

      

    }


  • 裸奔白菜
    2020-08-13 14:55:44

    原因是conten.childNodes一直在变
    简单分解下:

    第一次循环, i=0, 此时删除的是第一个#text(空文本节点),这应该没有疑问,删除后数组就变为:["html","#text","php","#text","javascript","#text","jquery","#text","java","#text"], length为10
    那么第二次循环,i=1, 此时的childNodes[1]操作的就是第一次删除后得到的数组,那么当然是#text(原有的第二个空文本节点)
    ....
    以此内推,现在就应该懂了