参考代码是怎样执行的

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

我要吃冰激凌

2016-03-13 17:44

每次循环以后,content.childNodes.length的值为什么会发生变化,变量content是在for循环外声明的啊

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


写回答 关注

1回答

  • LeingK
    2016-03-13 22:59:30
    已采纳

    那个,你是不是忽视了这句:content.removeChild(childNode);

    你都删掉一个子节点了,长度肯定会变化呀,content.childNodes.length的值肯定每次都会减1;

    问题是,参考代码跟content的长度有半毛钱关系!!!

    先说for循环的执行条件,语句一是赋值语句,只是在开始的时候执行一次,只执行一次!!!

    也就是说,content.childNodes.length只执行了一次,后面的循环跟它木有半毛钱关系,它只是给变量i一个初始值而已

    然后再说下循环条件,i>=0;这个很容易懂吧,只要只要符合条件就会循环一次,

    然后i--也很容易懂得吧,循环一次i的值就减1,

    然后在说下循环体吧,就是每次都删除下标为i的节点而已,

    首先第一次循环,i的值是length-1,很明显是删除的是数组的最后一个对象,数组删掉一个对象,length肯定减少一个,然后i的值也减少一个,所以之后每次的循环其实删除的都是数组最后的一个对象,直到删除最后一个节点,i的值成了负值退出循环。

    所以,我觉得楼主可以多多参考一下这个w3school



    我要吃冰激凌

    非常感谢!

    2016-03-13 23:02:44

    共 1 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题