![](/img/trans.png)
[英]I am trying to connect multiple functions and buttons together using js. and html. and I'm not sure what i'm missing
[英]Trying to toggle visibility of classes with buttons (using Javascript), absolutely nothing works, what am I missing?
我想建立一个页面,其中页面上某些元素的可见性通过按钮切换,但是由于某种原因,我的代码只是被忽略了/绝对不执行任何操作。
使用ID时,我可以使它工作,但是只有页面上ID的第一个实例会更改,而其余的则被忽略。 在课堂上, 什么也没有发生 。
我确定我在这里遗漏了一些基本知识,但我不知道是什么。 请检查以下内容:
function georgianInfo() { document.getElementByClassName("georgian").style.display = "block"; document.getElementByClassName("international").style.display = "none"; } function internationalInfo() { document.getElementByClassName("georgian").style.display = "none"; document.getElementByClassName("international").style.display = "block"; }
.georgian { display: none; } .international { display: block; }
<form><input type="button" onClick="georgianInfo()" value="georgian students"></form> <form><input type="button" onClick="internationalInfo()" value="international students"></form> <h4 class="margin-rmv">Admissions Information</h4> <h5 class="georgian">Georgian Students Admissions Information</h5> <h5 class="international">International Students Admissions Information</h5>
请参阅Codepen: https ://codepen.io/escapetomars/pen/vxBLgg
更改document.getElementsByClassName
的拼写。
同样, document.getElementsByClassName
返回一个数组/元素列表。 因此,您必须使用正确的索引来引用它。
参考代码:
function georgianInfo() { document.getElementsByClassName("georgian")[0].style.display = "block"; document.getElementsByClassName("international")[0].style.display = "none"; } function internationalInfo() { document.getElementsByClassName("georgian")[0].style.display = "none"; document.getElementsByClassName("international")[0].style.display = "block"; }
.georgian { display: none; } .international { display: block; }
<table class="tab-menu" cellspacing="0" cellpadding="0"> <tr> <td> <form><input type="button" onClick="georgianInfo()" value="for georgian students"></form> </td> <td> <form><input type="button" onClick="internationalInfo()" value="for international students"></form> </td> </tr> </table> <h4 class="margin-rmv">Admissions Information</h4> <h5 class="georgian">Georgian Students Admissions Information</h5> <h5 class="international">International Students Admissions Information</h5>
我建议您阅读有关Document.getElementsByClassName
的MDN文章 ,以更好地理解该结构。
更改功能为:
function georgianInfo() {
document.getElementsByClassName("georgian")[0].style.display = "block";
document.getElementsByClassName("international")[0].style.display = "none";
}
function internationalInfo() {
document.getElementsByClassName("georgian")[0].style.display = "none";
document.getElementsByClassName("international")[0].style.display = "block";
}
正确的方法是document.getElementsByClassName,顾名思义,它返回一个项目数组。 因此,如果必须对这些元素应用任何内容,则需要遍历该数组,然后对每个元素应用某些内容,或者可以使用数组索引选择特定的元素。
var element = document.getElementsByClassName('class')[0]; // assuming you have at least one matching element.
element.style.display = 'none';
这是更新的代码笔的链接
getElementById
和getElementsByClassName
之间有一个非常重要的区别。 id是唯一的,并且id="abc"
只有一个元素。 因此, getElementById('abc')
获取元素,您可以更改其样式。 一些浏览器如果您重复输入ID,则会获得第一个浏览器。
但是getElementsByClassName
是不同的。 可能有多个元素class="abc"
。 因此, getElementsByClassName
为您提供了一个集合,并且您不能通过这种方式更改集合的样式。 如另一个答案中所述,您需要从集合中选择一个元素以更改其样式。
document.getElementsByClassName("georgian")[0].style.display = "block";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.