至于我也明白了,querySelector
返回一个真正的可变因素,而querySelectorAll
返回非现场静态节点集。querySelectorAll:操作节点
我想调整安装到特定选择的所有元素的风格。它工作正常的第一要素与querySelector
,但不是与querySelectorAll
所有匹配的元素。我想这是因为节点集是非活的。
是否有解决方法?或者我错过了什么?
至于我也明白了,querySelector
返回一个真正的可变因素,而querySelectorAll
返回非现场静态节点集。querySelectorAll:操作节点
我想调整安装到特定选择的所有元素的风格。它工作正常的第一要素与querySelector
,但不是与querySelectorAll
所有匹配的元素。我想这是因为节点集是非活的。
是否有解决方法?或者我错过了什么?
的问题是,querySelector
返回单个节点。 querySelectorAll
返回一组节点(活跃性意味着如果更新它们,组合中的元素将不会被删除)。你需要在每个匹配的元素上设置一个样式,可能会有一个循环 - 你不能只为它们设置一个属性。
所以,你可能需要做这样的事情:
var nodes = document.querySelectorAll('div.foo');
for (var i = 0; i < nodes.length; i++) {
nodes[i].style.color = 'blue';
}
这也将工作..
[].forEach.call(document.querySelectorAll('div.foo'), function (el) {
el.style.color = 'blue';
});
它让我感兴趣的是,以上的作品,但'document.querySelectorAll(“div.foo”)的forEach(函数(E1)...'没有按“T工作的任何想法,为什么 – 2015-01-29 03:51:38
querySelectorAll返回一个节点列表,它不具有的forEach参见:?https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Why_is_NodeList_not_an_Array.3F – seans 2015-02-24 15:44:01
如querySelectorAll: manipulating nodes但有办法描述,使其工作,因为forEach
只适用于阵列,不适用于NodeLists:
Array.prototype.slice.call(document.querySelectorAll('div.foo')).forEach(function(el) {
el.style.color = 'blue';
});
非常感谢!我尝试过,但它不起作用,所以我认为这是由于nodeset没有生效。但实际上我刚才忘了初始化迭代器(= 0)... – fabb 2011-06-11 09:28:48