Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于按钮单击的JavaScript隐藏/显示div_Javascript_Html - Fatal编程技术网

基于按钮单击的JavaScript隐藏/显示div

基于按钮单击的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

所以我一直在尝试做一个JavaScript过滤系统,它根据点击的按钮/链接隐藏和显示div。 我的按钮使用我的JavaScript函数
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
方法为每个元素添加了一个style
display: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";
  }
}