每次循环以后,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); } }
那个,你是不是忽视了这句: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