querySelectorAll:操作节点

发布于 2024-11-15 01:09:32 字数 253 浏览 4 评论 0 原文

据我了解,querySelector 返回一个真正的可更改元素,而 querySelectorAll 返回一个非活动静态节点集。

我想调整适合特定选择器的所有元素的样式。它适用于使用 querySelector 的第一个元素,但不适用于使用 querySelectorAll 的所有匹配元素。我猜这是因为节点集是非活动的。

有解决方法吗?或者我错过了什么?

As far as I have understood, querySelector returns a real changeable element while querySelectorAll returns a non-live Static Node Set.

I want to adjust the style of all elements fitting to a specific selector. It works fine for the first element with querySelector, but not for all matching elements with querySelectorAll. I guess that's because the node set is non-live.

Is there a workaround? Or am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

像你 2024-11-22 01:09:33

这也将起作用..

[].forEach.call(document.querySelectorAll('div.foo'), function (el) {
    el.style.color = 'blue';
});

this will also work..

[].forEach.call(document.querySelectorAll('div.foo'), function (el) {
    el.style.color = 'blue';
});
開玄 2024-11-22 01:09:33

querySelectorAll:操作节点中所述,但有一种使其工作的方法,因为< code>forEach 仅适用于数组,不适用于 NodeList:

Array.prototype.slice.call(document.querySelectorAll('div.foo')).forEach(function(el) {
    el.style.color = 'blue';
});

As described in querySelectorAll: manipulating nodes but with a way to make it work, since forEach only works on Arrays, not on NodeLists:

Array.prototype.slice.call(document.querySelectorAll('div.foo')).forEach(function(el) {
    el.style.color = 'blue';
});
十年九夏 2024-11-22 01:09:32

问题是 querySelector 返回单个节点。 querySelectorAll 返回一组节点(活跃度意味着如果更新集合中的元素,它们不会被删除)。您需要为每个匹配的元素设置样式,可能使用循环 - 您不能只为所有元素设置一次属性。

所以,你可能需要做这样的事情:

var nodes = document.querySelectorAll('div.foo');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].style.color = 'blue';
}

The problem is that querySelector returns a single node. querySelectorAll returns a set of nodes (the live-ness means the elements in the set won't be removed if you update them). You need to set a style on each of the elements matched, probably with a loop -- you can't just set a property once for all of them.

So, you probably need to do something like this:

var nodes = document.querySelectorAll('div.foo');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].style.color = 'blue';
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文