javascript - 下拉菜单的关闭列表

标签 javascript html

我有这个下拉菜单:

document.addEventListener("DOMContentLoaded", function(event) {
  allNameMuseums().forEach(function(item) { // ITERAZIONE
    document.getElementById("myDropdown").innerHTML += '<a onclick="updateData(this)">' + item + '</a>';
  })
});

function myFunction() {
  document.getElementById("myDropdown").classList.toggle("show");
}

function filterFunction() {
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  div = document.getElementById("myDropdown");
  a = div.getElementsByTagName("a");
  for (i = 0; i < a.length; i++) {
    if (a[i].innerHTML.toUpperCase().indexOf(filter) > -1) {
      a[i].style.display = "";
    } else {
      a[i].style.display = "none";
    }
  }
}
<div class="dropdown">
  <button onclick="myFunction()" class="dropbtn">Museo1</button>
  <div id="myDropdown" class="dropdown-content">
    <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
  </div>
</div>

我希望当我单击下拉菜单列表中的项目时,列表会自动关闭。

最佳答案

您需要的是从元素中删除“show”类。


例子:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.dropbtn { background-color: #4CAF50; color: white; padding: 16px; font-size: 16px; border: none; cursor: pointer; }
.dropbtn:hover, .dropbtn:focus { background-color: #3e8e41; }
#myInput { border-box: box-sizing; background-image: url('searchicon.png'); background-position: 14px 12px; background-repeat: no-repeat; font-size: 16px; padding: 14px 20px 12px 45px; border: none; border-bottom: 1px solid #ddd; }
#myInput:focus { outline: 3px solid #ddd; }
.dropdown { position: relative; display: inline-block; }
.dropdown-content { display: none; position: absolute; background-color: #f6f6f6; min-width: 230px; overflow: auto; border: 1px solid #ddd; z-index: 1; }
.dropdown-content a { color: black; padding: 12px 16px; text-decoration: none; display: block; }
.dropdown a:hover { background-color: #ddd; }
.show { display: block; }
</style>
</head>
<body>

<h2>Search/Filter Dropdown</h2>
<p>Click on the button to open the dropdown menu [...]</p>

<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">Dropdown</button>
  <div id="myDropdown" class="dropdown-content">
    <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
    <a href="#about" onclick="select()">Item1</a>
    <a href="#base" onclick="select()">Item2</a>
  </div>
</div>

<script>

function myFunction() {
    document.getElementById("myDropdown").classList.toggle("show");
}

function filterFunction() {
    var input, filter, ul, li, a, i;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    div = document.getElementById("myDropdown");
    a = div.getElementsByTagName("a");
    for (i = 0; i < a.length; i++) {
        if (a[i].innerHTML.toUpperCase().indexOf(filter) > -1) {
            a[i].style.display = "";
        } else {
            a[i].style.display = "none";
        }
    }
}

function select() {
  //Your item selection logic here...
  myFunction();
}

</script>

</body>
</html>

关于javascript - 下拉菜单的关闭列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52627960/

相关文章:

javascript - HTML/CSS/jQuery 换行问题

javascript - HTML5 Canvas : Drawing shapes around edges of the canvas

html - 我可以使用 :before or :after pseudo-element on an input field? 吗

JavaScript 对象属性不会被减去

javascript - 如何将单个数据放在 Chart.js 的中心?

javascript - 将值从内部函数传递到外部函数 - 无法保存密码

html - 如何防止 webkit-scrollbar 推过 div 的内容?

javascript - 如何让 jPanelMenu 不强制一切都正确?

javascript - 如何通过检查键来过滤对象

javascript - 全局变量未传递 - Javascript FCF