问答详情
源自:9-14 删除节点removeChild()

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

为什么输出结果是这样的

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

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


提问者:慕移动5947621 2018-03-25 20:08

个回答

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

    大概就是这样。

    有误可更正。