首页 > 解决方案 > 直播收集奇怪的行为?

问题描述

为什么 li 元素仍然在 live 集合中,尽管它们不在 DOM 中?

'use strict';

let lis = document.body.firstElementChild.getElementsByClassName('li');

document.body.firstElementChild.remove();

console.log( lis.length );
<ul>
    <li class="li"></li>
    <li class="li"></li>
    <li class="li"></li>
</ul>

标签: javascripthtmlnodelist

解决方案


该集合是 的后代document.body.firstElementChild,因此即使该元素不再存在于 DOM 中,该元素仍然存在,并且具有与该类名匹配的子元素。

要断开连接,您必须.liul. (从文档中删除ul不会破坏 theul和它li的 s 之间的连接)

const lis = document.body.firstElementChild.getElementsByClassName('li');
document.querySelector('li').remove();
console.log(lis.length);
<ul>
  <li class="li"></li>
  <li class="li"></li>
  <li class="li"></li>
</ul>


推荐阅读