基于按钮单击的JavaScript隐藏/显示div
所以我一直在尝试做一个JavaScript过滤系统,它根据点击的按钮/链接隐藏和显示div。 我的按钮使用我的JavaScript函数基于按钮单击的JavaScript隐藏/显示div,javascript,html,Javascript,Html,所以我一直在尝试做一个JavaScript过滤系统,它根据点击的按钮/链接隐藏和显示div。 我的按钮使用我的JavaScript函数filteral(),filter1(),filter2()和filter3()。我在另一个HTML文档中做了一些测试,只是为了让它在一个更简单的文档中工作,但它只适用于ID,而不适用于类名 我的HTML代码: 遍历每个元素: function filterAll() { for(i=0;i<g.length;i++) g[i].style.displ
filteral()
,filter1()
,filter2()
和filter3()
。我在另一个HTML文档中做了一些测试,只是为了让它在一个更简单的文档中工作,但它只适用于ID,而不适用于类名
我的HTML代码:
遍历每个元素:
function filterAll() {
for(i=0;i<g.length;i++)
g[i].style.display="block";
}
函数filterAll(){
正如Sebastian Olsen在评论中提到的那样,for(i=0;i返回一个节点列表,而不是单个元素,因此您可以将其视为元素数组。要处理这些元素,您应该从该数组中选择元素,如g[index]
。例如,您可以通过常规的for
循环遍历此元素数组,因此您的filterAll
方法应该如下所示:
function filterAll() {
for (var i = 0; i < g.length; i++) {
g[i].style.display = "block";
}
}
函数filterAll(){
对于(变量i=0;i
如何使用document.getElementsByClassName访问一个或多个元素?
由于document.getElementsByClassName()
返回一个带有受影响元素的节点列表
,该元素只是类名的集合,因此您可以使用索引
(其中索引
以0
开头)或简单地使用for
循环来访问它
带有for循环的示例
请注意,for loop
方法为每个元素添加了一个styledisplay:block
属性,而索引方法将仅为具有给定索引的元素应用样式
参考文献
我使用W3Schools.com上的示例修复了它:
我重写的代码是:
var g = document.getElementsByClassName("grid-item");
var b = document.getElementsByClassName("bolcher");
var s = document.getElementsByClassName("shot");
var m = document.getElementsByClassName("diverse");
var i;
function filterAll() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "block";
}
}
function filterBolcher() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < b.length; i++) {
b[i].style.display = "block";
}
}
function filterShots() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < s.length; i++) {
s[i].style.display = "block";
}
}
function filterMisc() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < m.length; i++) {
m[i].style.display = "block";
}
}
var g=document.getElementsByClassName(“网格项”);
var b=document.getElementsByClassName(“bolcher”);
var s=document.getElementsByClassName(“shot”);
var m=document.getElementsByClassName(“多样化”);
var i;
函数filterAll(){
对于(i=0;i
我所做的是“检查”每个具有相应类名的元素,更改display的值(请参见链接中的更多内容)。不是每次都写一个循环,而是使用一个函数
,并调用该函数:
var g=document.getElementsByClassName(“网格项”);
var b=document.getElementsByClassName(“bolcher”);
var s=document.getElementsByClassName(“shot”);
var m=document.getElementsByClassName(“多样化”);
函数filterAll(){
应用程序显示(g,“块”);
}
函数filterBolcher(){
applyDisplay(g,“无”);
应用程序显示(b,“块”);
}
函数filterShots(){
applyDisplay(g,“无”);
应用程序显示(“块”);
}
函数filterMisc(){
applyDisplay(g,“无”);
应用显示(m,“块”);
}
函数applyDisplay(节点列表、显示){
对于(var i=0;i
卡蒂戈里埃
阿布里科斯
Althea
巴南莱克瑞兹酒店
巴南
喋喋不休
香槟
GetElementsByCassName
返回一个。因此,您必须遍历列表中的每个元素以设置样式。有多个元素的类名为“grid item”。因此,您需要对它们进行迭代。此外,有些类不在您粘贴的HTML中。这两个类可能都是重复的。我查阅了w3schools的示例,了解到我必须在我的示例中创建for循环:)我现在在我的帖子上写了一个答案,供大家学习。如果您想提高可读性并纠正原始代码中的一些拼写错误,请看一看:)
function filterAll() {
for (var i = 0; i < g.length; i++) {
g[i].style.display = "block";
}
}
var x = document.getElementsByClassName("example");
function function(){
for (var i = 0; i < g.length; i++){
x[i].style.display = "block";
}
}
var x = document.getElementsByClassName("example");
x[0].style.display = "block";
var g = document.getElementsByClassName("grid-item");
var b = document.getElementsByClassName("bolcher");
var s = document.getElementsByClassName("shot");
var m = document.getElementsByClassName("diverse");
var i;
function filterAll() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "block";
}
}
function filterBolcher() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < b.length; i++) {
b[i].style.display = "block";
}
}
function filterShots() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < s.length; i++) {
s[i].style.display = "block";
}
}
function filterMisc() {
for (i = 0; i < g.length; i++) {
g[i].style.display = "none";
}
for (i = 0; i < m.length; i++) {
m[i].style.display = "block";
}
}