javascript - 直播收集奇怪的行为?
问题描述
为什么 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>
解决方案
该集合是 的后代document.body.firstElementChild
,因此即使该元素不再存在于 DOM 中,该元素仍然存在,并且具有与该类名匹配的子元素。
要断开连接,您必须.li
从ul
. (从文档中删除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>
推荐阅读
- vue.js - Vue:用作函数参数时无法访问我的初始数据值
- mysql - 错误:mysqlclient 的构建轮子失败
- angular - Angular 7:如何在 Visual Studio 2017 中部署 Angular“Build”文件夹以及 ASP.Net Web Api
- python - 如何在pycharm社区v2018.3.6中运行unittest
- windows - 如何在 Perl 中打印 Hexagram?
- php - 无法从 Symfony 服务访问 dotenv 变量
- linux - 获取 E175002:服务器发送了意外的返回值(500 内部服务器错误)以响应 '/svn/repo/!svn/me' 的 POST 请求
- c++ - 使用 CPLEX C++ API 在回调中获取松弛值
- html - 移动设备上的 Outlook 365 模糊签名图像(高 DPI 问题)
- r - 根据单个列的内容将数据行添加到 tibble