是否可以在不使用对象或数组的情况下display: none
查询列表?
这是一个伪代码,其中包含我想要选择的查询列表并以最小的方式隐藏:
(function fbPurity () {
let hide = {
document.querySelector("#mako");
document.querySelector("#gaga");
document.querySelector("._top");
document.querySelector(".yo");
document.querySelector(".col");
}
hide.style.display = "none";
})();
以下列方式隐藏这些内容有效,但是当您处理大约20-30个查询的列表时,这些内容可能会重复且效率低下(因为您将有大约60行来隐藏这些查询)。
let annoyingColumn = document.querySelector(".col");
annoyingColoumn.style.display = "none";
为什么我不喜欢在这种情况下使用对象或数组:
对象和数组需要我使用属性或键,并用引号标记这些及其值。在我看来,这将冗余地延长代码,而我只想要一个简单的列表。
我的问题:
对于一个简单的querySelectors列表,我应该使用什么,在一个命令中都有display: none
(如在伪代码中)?
答案 0 :(得分:4)
document.querySelectorAll
返回具有forEach
的NodeList,所以:
document.querySelectorAll("#mako,#gaga,._top,.yo,.col").forEach(function(el) {
el.style.display = "none";
});
答案 1 :(得分:0)
检查出来:
function hideCollection(selector){
var a = document.querySelectorAll(selector);
for(var i=0,l=a.length; i<l; i++){
a[i].style.display = 'none';
}
return a;
}
hideCollection('.col');
答案 2 :(得分:0)
你可以创建一个小函数,它接受一个选择器并隐藏相应的元素,然后使用一个简单的选择器数组并调用forEach
传递给它的那个函数。像这样:
function hide(selector) {
document.querySelector(selector).style.display = "none";
}
["#mako", "#gaga", "._top", ".yo", ".col"].forEach(hide);
答案 3 :(得分:0)
为什么不这样呢:
let hide = ["#mako", "#gaga", "._top", ".yo", ".col"];
$(hide.join(",")).hide();