为了账号安全,请及时绑定邮箱和手机立即绑定

参考代码是怎样执行的

每次循环以后,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 回答

那个,你是不是忽视了这句: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



1 回复 有任何疑惑可以回复我~
#1

我要吃冰激凌 提问者

非常感谢!
2016-03-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

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

进入课程

参考代码是怎样执行的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信