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

为什么这样只输出一部分结果

为什么输出结果是这样的

删除掉的节点是:html
删除掉的节点是:javascript
删除掉的节点是:java

而且不输出“所有节点已删除”


正在回答

1 回答

for循环第一次,i=0,删除html节点;

第二次,i=1,因为第一次循环删除了一个节点,html语句中的结构变为:<div id="content"><h1>php</h1><h1>javascript</h1><h1>jquery</h1><h1>java</h1></div>

所以删除的content.childNodes[1]就是javascript节点,而不是php节点;

第三次,i=2,前两次循环删除了两个节点了,所以这里的content.childNodes[2]指的是java;

第四次,i=3时,html语句为:<div id="content"><h1>php</h1><h1>jquery</h1></div>,只有两个节点,查找不到第四个节点,所以出错了,后面的“所有节点已删除”也输出不了

大概是这样。

错误的点在于 1.长度信息没更新,即c值;2.content.childNodes的长度会变,所以执行循环后,i++会引发漏删节点

大概就是这样。

有误可更正。

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

慕移动5947621 提问者

非常感谢!
2018-03-26 回复 有任何疑惑可以回复我~
#2

慕移动5947621 提问者

谢谢,逻辑很清楚,所以如果我一定要用正序的话,那就是要让i始终为0,那样永远都是删除第一个
2018-03-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这样只输出一部分结果

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