有一段原话是 :"不要把i<content.childNodes.length做为判断条件"
然后老师接下来的代码中:
function clearText() { var content=document.getElementById("content"); nodel=content.childNodes.length for(i=0;i<nodel;i++) { 把这里的nodel替换为content.childNodes.length,那不就跟之前那句话相冲突了吗? var x=content.removeChild(content.childNodes[0]); } }
求大神指教!!!
function clearText() { var content=document.getElementById("content"); // 在此完成该函数 for(var i = 0 ; i < content.childNodes.length ; i ++){//此处content.childNodes.length为动态的,因为循环每进行一次都会删除一个childNode,所以每次循环content.childNodes.length都会减少一个单位长度直到最后为0不满住0<0. content.removeChild(content.childNodes[i]); i-- //这里我们用i--抵消了前面的i++ 这样i 就一直为0每次都只删除content.childNodes的第一个childNode } }
这是我的代码 .大家一起交流都是学员
content.childNodes.length在循环时是动态变化的
你删一个他就少一个,也就是从5一直到0
但是你 在循环前,也就是开始删除前把他的值 也就是 5 赋值 给了nodel 既 nodel=content.childNodes.length.
这是一次赋值也就是说 nodel 之后一直是 5 虽然content.childNodes.length变了值 ,但nodel已经是5了也再也和content.childNodes.length没关系了.不管content.childNodes.length怎么变,nodel依旧是5.
表达能力有点不够 希望能看懂
带入循环