Javascript显示== "none"实际上没有显示

标签 javascript html display

我编写了一个以前使用过的基本切换函数,但由于某种原因它不能完全工作。我这么说的原因是因为当我控制台记录显示时,它说显示没有,但元素永远不会消失。我知道该函数正在触发,并且它检测到元素显示为“”,但是它将其设置为无(并将其记录到控制台证明了这一点),但实际元素并没有从屏幕上消失。

function filter_toggle(){
    var form = document.getElementById("filter_form");
    var display = form.style.display;
    console.log(display);
    if (display == ""){
        display = "none";
    }
    else if (display == "none"){
        display = "";
    }
}
<div id="filter_wrap">
                <div id="filter_toggle" class="basic_toggle" onclick="filter_toggle()">--Filter--</div>
                <div id="filter_form" class="bg-1D1D1D">
                ...more elements...
                </div>
</div>

最佳答案

变量display已经被赋予了对象的display属性的值(这是一个字符串值),改变变量不会改变属性,而是,您可以使用样式:

function filter_toggle() {
  var form = document.getElementById("filter_form");
  var style = form.style;
  
  if (style.display != "none") {
    style.display = "none";
  } else if (style.display == "none") {
    style.display = "block";
  }
}
<div id="filter_wrap">
  <div id="filter_toggle" class="basic_toggle" onclick="filter_toggle()">--Filter--</div>
  <div id="filter_form" class="bg-1D1D1D">
    Hello, World!
  </div>
</div>

关于Javascript显示== "none"实际上没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64546075/

相关文章:

javascript - Jquery 动画移动元素根本不起作用

javascript - 如何在 2 列中显示多个 html 表格

html - 如何根据子元素的宽度高效分配列宽?

javascript - 如何防止具有绑定(bind)数据属性的 HTML 对象元素在 "samsung internet"浏览器全屏后刷新

javascript - Jquery Cookie 通过模态显示/隐藏菜单

javascript - 如何在javascript中使用分隔符和限制来分割数组?

javascript - 使用javascript在html中基于下拉选择显示和隐藏div元素

html - 跨度和 anchor 位置显示问题 - 在 li 标签内

css - 如何使元素不在手机上的 Bootstrap 2 中加载?

javascript - 在来自不同域的 iFrame 上运行小书签