javascript - remove()是否从 'querySelectorAll'创建的节点列表中删除节点?

标签 javascript

我是编程新手,很难理解以下Javascript:

我的代码:

let nodeList = document.getElementById('ID').querySelectorAll('img');
    for (i=0; i < nodeList.length; i++) {
        nodeList[i].remove();
    }

此代码从我的HTML中删除了所有引用的“img”元素,但没有从“nodeList”中删除任何元素。

为什么remove()仅从HTML中删除而不删除'nodeList'-元素,并且有办法从display&从nodeList中删除元素?

谢谢

最佳答案

这是因为querySelectorAll()返回元素的静态列表。这意味着该列表将保留对元素的引用,甚至将其删除。分配后不会更改。

The Document method querySelectorAll() returns a static (not live) NodeList representing a list of the document's elements that match the specified group of selectors



另一方面,如果您要实时收集,则可以使用document.getElementsByTagName()document.getElementsByClassName()

const divs = document.getElementsByTagName('div');
divs[1].remove();
console.log(divs)
<div>Hey</div>
<div>H</div>
<div>B</div>

关于javascript - remove()是否从 'querySelectorAll'创建的节点列表中删除节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60848704/

相关文章:

javascript - 在没有 pageAction 或 browserAction 的情况下执行扩展操作

javascript - 为什么使用await & EventEmitter时nodejs程序会退出?

javascript - Twilio.Sync map 经常无法获取 300 多个项目

php - 键入时存储的表单输入

javascript - 滚动后 jquery 动画的长时间延迟

javascript - 对象解构以构造新对象

javascript - 如何在 JavaScript 中创建嵌套菜单?

javascript - Sidr.js 相当于没有 jQuery 的 AngularJS

javascript - Lodash uniqBy更新最新值

javascript - 谷歌图表 : Show only a certain country