我想用一些按钮切换一些div
s的知名度。我有两个切换不同元素的按钮。目前,当您按下切换按钮时,它将隐藏div
s,但当您按下第二个按钮时,它将切换其div
s和其他共享相同类别/ ID的其他div
的可见性(因此不会隐藏它们)。多个切换隐藏divs withought隐藏已隐藏
实例(也a JSFiddle):
document.querySelector(".a").addEventListener("click", myFunction);
document.querySelector(".b").addEventListener("click", myFunction);
function myFunction() {
let id = document.querySelectorAll(this.getAttribute('data-stuff'));
for (let i = 0, len = id.length; i < len; i++) {
console.log(id[i]);
if (id[i].style.visibility == "collapse") {
id[i].style.visibility = "visible";
} else {
id[i].style.visibility = "collapse";
}
}
}
<div id="stuff1">hi</div>
<div>hi</div>
<div id="stuff2">hi</div>
<div id="stuff1" class="stuff">hi</div>
<div id="stuff1">hi</div>
<div id="stuff1" class="stuff">hi</div>
<div>hi</div>
<input type="button" class="a" data-stuff="#stuff1" value="hide 1"><br>
<input type="button" class="b" data-stuff=".stuff" value="hide 2">
我知道我要检查,如果div
已经隐藏起来,如果第二个按钮被按下,但我不知道我会怎么做。我正想这样的事情,但它没有工作,我想要的方式:
let id = document.querySelectorAll(a);
let btn = document.querySelector('.a2').value;
for (let i = 0, len = id.length; i < len; i++) {
if (id[i].style.visibility == "collapse") {
if (id[i].style.visibility == "collapse" && /Show/i.test(btn)) {
id[i].style.visibility = "collapse";
}
id[i].style.visibility = "visible";
} else {
id[i].style.visibility = "collapse";
}
}
你完全正确的是,使用'class'es比重复的'id'更好。但是我没有看到使用像'document.querySelector'这样的函数而不是jQuery的问题。我知道jQuery曾经是避免跨浏览器不兼容的必要条件,但我认为现在大多数人已经理清了这些。没有图书馆的页面下载时间会稍少一些。你能否详细说明你为什么推荐一个图书馆? –
下载速度也有所提高,因此获取额外脚本的成本对许多应用程序来说并不致命。好处是您必须编写更少的代码,并且您的代码更易于为其他人阅读,这对生产力非常重要。但是,如果你的页面加载几毫秒延迟是一个交易断路器,通过一切手段排除外部依赖。这一切都取决于你的情况。没有一个正确的解决方案。 – gmferland