【发布时间】:2021-03-18 19:56:01
【问题描述】:
作为一个 javascript 新手,我需要一些帮助。我正在构建具有某些多个元素(在我的情况下是圣经的不同翻译)的 html 页面,这些元素会根据用户的偏好进行切换。我需要通过单击按钮在“display:block”和“display:none”之间更改给定css类的显示属性。我当前的代码适用于更改 css 类中段落的第一个实例,但我想要的是能够通过单击按钮来更改 css 的所有实例的显示属性。我的研究告诉我,我的 javascript 中可能需要一个“for”循环,但我无法弄清楚如何编写和实现它的正确语法,以便按钮单击将显示/隐藏相同的所有实例css 类。这是我的代码:
<style>
p.niv {display:block;}
p.esv {display:none;}
p.kjv {display:none;}
</style>
<p>Click the buttons to display your preferred Bible version:</p>
<button onclick="niv()">NIV</button>
<button onclick="kjv()">KJV</button>
<button onclick="esv()">ESV</button>
<p>Regular paragraph, blah blah</p>
<p class="niv">this NIV paragraph will become hidden when the KJV or ESV button is clicked</p>
<p class="niv">but this NIV paragraph stays visible even though I want it to be hidden too</p>
<p class="kjv">this KJV paragraph will become hidden when the NIV or ESV button is clicked</p>
<p class="kjv">but this KJV paragraph stays visible even though I want it to be hidden too</p>
<p class="esv">this ESV paragraph will become hidden when the KJV or NIV button is clicked</p>
<p class="esv">but this ESV paragraph stays visible even though I want it to be hidden too</p>
<script>
var n = document.getElementsByClassName("niv") [0];
var k = document.getElementsByClassName("kjv") [0] ;
var e = document.getElementsByClassName("esv") [0];
function niv() {
n.style.display = "block";
k.style.display = "none";
e.style.display = "none";
}
function kjv() {
n.style.display = "none";
k.style.display = "block";
e.style.display = "none";
}
function esv() {
n.style.display = "none";
k.style.display = "none";
e.style.display = "block";
}
</script>
如何循环我的 javascript 函数来更改 css 类的每个实例的显示属性?提前感谢您帮助新手!
【问题讨论】:
-
(因为你的类名数量非常有限,而且是静态的,这也可以在没有任何循环的情况下完成 - 通过在你的样式表中创建规则,隐藏某个类的所有这些元素,当共同祖先分配了一个特定的类 - 然后你只需要在一个地方设置/删除一个类。)
-
CBroe 感谢您的回复。由于 html 只是我拥有的众多工作之一,恐怕我的知识还不够丰富,无法理解我在您迄今为止提供的示例中所看到的内容。我猜你已经回答了我的问题,但我不够敏锐,不知道如何处理它!
-
stackoverflow.com/a/6523513/1427878 有一个非常简单的示例,说明如何使用简单的
for循环遍历 getElementsByClassName 的结果,并展示如何通过循环计数器变量访问元素。 -
CBroe 谢谢你,我会摆弄一下,看看我是否能理解它。我非常感谢您的回复。如果我解决了,我会告诉你的。
标签: javascript css for-loop