javascript - 让 <div> 同时消失

标签 javascript html css variables

您将在下面找到的代码的目的是制作某种过滤器。但由于某种原因,它不起作用。

如您所见,当您在选择 input 框时尝试隐藏框时,它不会起作用;但是当你制作 var x 时,var x = document.getElementById("a"); 它将起作用。有没有办法隐藏所有不同的盒子?

function myFunction1() {
  var x = [document.getElementById("a"), document.getElementById("b"), document.getElementById("c")];

  if (x.style.display == 'block')
    x.style.display = 'none';
  else
    x.style.display = 'block';
}
#a, #b, #c {
  float: left;
  width: 25%;
  height: 200px;
  background-color: #ffffff;
  border: 1px solid #002261;
  margin: -1px;
  text-align: center;
  display: block;
}
<input type="checkbox" onclick="myFunction1()">Try to hide all


<div id="a">item a</div>
<div id="b">item b</div>
<div id="c">item c</div>

如您所见,您无法同时隐藏所有框。

最佳答案

您正在创建一个列表([]),然后尝试设置列表本身的样式,而不是其内容。

JavaScript 为此提供了一个简单的列表方法,forEach():

function myFunction1() {
  var x = [document.getElementById("a"), document.getElementById("b"), document.getElementById("c")];
  x.forEach(function(item) {
    if (window.getComputedStyle(item).display === 'block') item.style.display = 'none';
    else item.style.display = 'block';
  });
}

See this codepen demo
注意:您的代码在获取样式时有一个小错误,item.style.display 仅获取内联样式,因此您第一次调用该函数时它不会隐藏元素。我用 window.getComputedStyle(item).display 在上面的代码和 codepen 中修复了它。

关于javascript - 让 <div> 同时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699913/

相关文章:

html - 设置框架的最小高度?

php - 使用预定值(数据库)通过单击动态创建 <div> 或 <li> 项目

css - JSF 输出文本溢出

javascript - 在这种情况下,我如何将下拉列表中的值发送到 Controller

javascript - 在 Typescript 中使用多个字符串数组

javascript - Google 图表 LogScale 无法正常工作

javascript - 意识到 Javascript 表示数组的独特方式的排序

html - 表格在 Firefox 中显示错误,表格水平显示?

jquery - 我如何在 jQuery 的可滚动区域内获取元素的绝对位置?

html - 如何使用 Bootstrap 将按钮与中心对齐?