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

置顶回答的一些问题..求指导

有一段原话是 :"不要把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]);  }
 
   }

求大神指教!!!

正在回答

4 回答

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
  }
}

这是我的代码 .大家一起交流都是学员

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

qq_差不多先生_1

经过测试,每一个节点都进行了遍历。然后再删除,这是正确的做法。
2018-06-23 回复 有任何疑惑可以回复我~

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.

表达能力有点不够 希望能看懂

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

带入循环

0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

置顶回答的一些问题..求指导

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