gpt4 book ai didi

javascript - 我们可以直接从 NodeList 中删除节点吗?

转载 作者:可可西里 更新时间:2023-11-01 01:23:25 24 4
gpt4 key购买 nike

document.getElementsByTagName 返回了一个 NodeList 对象。

我想删除一些项目(假设我想从 NodeList 中删除第一个项目)

有办法吗? (我知道我可以手动将所有节点复制到一个数组中,但如果 NodeList 本身已经具有我们可以删除其中元素的函数,我不希望这样做)

我知道从 NodeList 中删除项目对显示没有影响(并且不应该导致任何浏览器显示刷新或类似的东西,我只是不希望 NodeList 对象持有对该节点的引用)

有办法吗? (或者我是否被迫将 NodeList 中的所有项目复制到一个数组中?)

最佳答案

正如您在 specification 中看到的那样, 没有从列表中删除元素的方法。

无论如何,这都没有意义。此 NodeList事件的,这意味着每当您访问某个属性时都会再次搜索 DOM,例如长度。来自 MDC :

(...) The returned list lis live, meaning that it updates itself with the DOM tree automatically. (...)

因此您必须将节点复制到数组中。

通过使用 Array 方法,您可以很容易地做到这一点。例如。复制它并直接删除第一个元素:

var nodes = [].slice.call(elements, 1); 

NodeList 是一个类数组 对象。因此,我们可以通过使用 call [docs] 对其应用数组函数。 . [].slice 只是获取对 slice [docs] 的引用的简写方法。

关于javascript - 我们可以直接从 NodeList 中删除节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6545379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com