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

for循环里用var i=0;i<content.childNodes.length;i++为什么实现不了?

for循环从0到子节点长度的值,就无法实现清楚,反过来从子节点长度的值到0,就可以实现,为什么呢?

正在回答

3 回答

function clearText() {
  var content=document.getElementById("content");
  // 在此完成该函数
  var a = content.childNodes;
  for (var i = 0; i < a.length; i++){
      content.removeChild( content.childNodes[0] );
      i--;
  }
}
</script>


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

1.用.length来限定for循环次数的时候,length的长度会变。数组里面的[i]也是变化的。
2.空白文本的节点也是要考虑进去的。(这也是为什么例子里面是childNodes[1]而不是childNodes[0]的原因,因为[0]是空白节点)

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

慕丝4318731

请问为什么length的长度会变长,而且就算考虑了空白节点,但是也不影响删除啊?
2016-09-05 回复 有任何疑惑可以回复我~
#2

慕用5675268 回复 慕丝4318731

我是这样理解的啊,可以帮助理解,但是不保证正确。h1 的标签,还有空白便签,差不多11个对吧,然后你用i++正向删除的话,每删除一个,这个content.childNodes.length,就在变化对吧,循环一次,少一个,其次,你用正向删除的话,i=0,删第一个,其实是删除的空白节点,删除之后,你的第一个h1标签,就变成了第一个节点了,i=1的时候,就开始删除第2个节点了,这个时候删除的是第一个h1标签后面的空白节点。依次类推,每删除一个,你的节点就会往前进一个的,所以倒序删除的话,前面的顺序都是不变的。
2016-09-06 回复 有任何疑惑可以回复我~
#3

慕丝4318731 回复 慕用5675268

谢谢!明白了
2016-09-09 回复 有任何疑惑可以回复我~

不知道.....

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

举报

0/150
提交
取消

for循环里用var i=0;i<content.childNodes.length;i++为什么实现不了?

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