使用 querySelector 获取所有包含 class 的元素
Get all elements containing a class with querySelector
为了改变 class 中的某些样式,我使用 querySelector()
:
el.querySelector('.fa fa-car').style.display = "none";
这对一个元素工作正常,但如果有更多元素包含这个 class 并且我想将所有元素的显示更改为 none,则此命令只会删除第一次出现的它让下一个保持不变。
我试着用 querySelectorAll()
:
el.querySelectorAll('.fa fa-car').style.display = "none";
但是这个returns一条错误信息:
html2canvas: TypeError: Cannot set property 'display' of undefined
关于如何获取包含特定 class 的所有元素并对它们执行操作的任何想法?
querySelector只有select一个元素,到select所有元素都可以使用querySelectorAll
[].map.call(el.querySelectorAll('.fa fa-car'), n => { n.style.display = 'none'; })
使用方法querySelectorAll()
参见 https://www.w3schools.com/jsref/met_document_queryselectorall.asp
您遇到错误是因为 querySelectorAll returns 一个 array.Iterate 在它上面然后使用 style.display
querySelectorAll()
returns元素集合。要更改它们的样式,您需要遍历它们。
另请注意,您的 selector 似乎无效。鉴于 FontAwesome class 规则,我认为您需要 select 两个 classes。试试这个:
Array.from(el.querySelectorAll('.fa.fa-car')).forEach(function() {
this.style.display = "none";
});
或者,当您用 jQuery 标记问题时,您可以将所有内容简化为:
$('.fa.fa-car').hide();
The Element method querySelectorAll()
returns a static (not live) NodeList representing a list of the document's elements that match the specified group of selectors.
使用Document.querySelectorAll()
获取所有元素。然后使用forEach()
在每个元素中设置样式:
var elList = document.querySelectorAll('.fa.fa-car');
elList.forEach(el => el.style.display = "none");
请注意:一些旧版本的 IE (<8) 将不支持 querySelectorAll()
。在那种情况下使用
Array.from(document.querySelectorAll('.fa.fa-car'))
您可以通过迭代此 class 的出现来完成所有操作,当然还可以借助一些 if 子句。
$('.fa.fa-car').each(function(){
$(this).css('color','white');
})
为了改变 class 中的某些样式,我使用 querySelector()
:
el.querySelector('.fa fa-car').style.display = "none";
这对一个元素工作正常,但如果有更多元素包含这个 class 并且我想将所有元素的显示更改为 none,则此命令只会删除第一次出现的它让下一个保持不变。
我试着用 querySelectorAll()
:
el.querySelectorAll('.fa fa-car').style.display = "none";
但是这个returns一条错误信息:
html2canvas: TypeError: Cannot set property 'display' of undefined
关于如何获取包含特定 class 的所有元素并对它们执行操作的任何想法?
querySelector只有select一个元素,到select所有元素都可以使用querySelectorAll
[].map.call(el.querySelectorAll('.fa fa-car'), n => { n.style.display = 'none'; })
使用方法querySelectorAll() 参见 https://www.w3schools.com/jsref/met_document_queryselectorall.asp
您遇到错误是因为 querySelectorAll returns 一个 array.Iterate 在它上面然后使用 style.display
querySelectorAll()
returns元素集合。要更改它们的样式,您需要遍历它们。
另请注意,您的 selector 似乎无效。鉴于 FontAwesome class 规则,我认为您需要 select 两个 classes。试试这个:
Array.from(el.querySelectorAll('.fa.fa-car')).forEach(function() {
this.style.display = "none";
});
或者,当您用 jQuery 标记问题时,您可以将所有内容简化为:
$('.fa.fa-car').hide();
The Element method
querySelectorAll()
returns a static (not live) NodeList representing a list of the document's elements that match the specified group of selectors.
使用Document.querySelectorAll()
获取所有元素。然后使用forEach()
在每个元素中设置样式:
var elList = document.querySelectorAll('.fa.fa-car');
elList.forEach(el => el.style.display = "none");
请注意:一些旧版本的 IE (<8) 将不支持 querySelectorAll()
。在那种情况下使用
Array.from(document.querySelectorAll('.fa.fa-car'))
您可以通过迭代此 class 的出现来完成所有操作,当然还可以借助一些 if 子句。
$('.fa.fa-car').each(function(){
$(this).css('color','white');
})