为什么是for(var i=x.childNodes.length-1;i>=0;i--)

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

listenlo

2016-04-27 15:41

function clearText() {

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

  for(var i=x.childNodes.length-1;i>=0;i--){

      var childNode=x.childNodes[i];

      x.removeChild(childNode);

  }  

}


写回答 关注

1回答

  • kuban
    2016-04-27 16:36:35
    已采纳

     for(var i=x.childNodes.length-1;i>=0;i--)这句是要倒着删除,这个应该能理解吧

    这个练习题正着删除倒着删除都能做,倒着删除相比不用考虑太多,正常写就好,因为总是从最后一个删除,正着删除的话需要从第一个删除,也就是

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

          var childNode=x.childNodes[0];//总从第一个删除

          x.removeChild(childNode);

      }

    如果按

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

          var childNode=x.childNodes[i];

          x.removeChild(childNode);

      }  

    这种写法,会漏删,导致一次删不干净。

    比如childNode读出来{h1,h2,h3,h4,h5}

    然后i=0,删了h1,没问题,继续

    i=1,此时childNode变成了{h2,h3,h4,h5},删除childNode[1],就是删除了h3

    这里就看出来了吧,会漏删,i=3的时候就没东西可删了,然后这次循环就结束了,但是还有h2,h4被漏下来了。


    listen...

    非常感谢!

    2016-04-28 16:28:34

    共 2 条回复 >

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题