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

来源:9-14 删除节点removeChild()

慕移动5947621

2018-03-25 20:08

为什么输出结果是这样的

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

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


写回答 关注

1回答

  • 阿宅娘
    2018-03-26 14:35:57
    已采纳

    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++会引发漏删节点

    大概就是这样。

    有误可更正。

    慕移动594...

    谢谢,逻辑很清楚,所以如果我一定要用正序的话,那就是要让i始终为0,那样永远都是删除第一个

    2018-03-26 16:47:04

    共 2 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题