html Javascript下拉菜单切换按钮

quhf5bfb  于 2022-12-09  发布在  Java
关注(0)|答案(3)|浏览(149)

我试图让我的选项列表隐藏,直到下拉菜单按钮已被单击,并为它再次隐藏,一旦它已被单击,然而,它是不工作的。这里是我的代码。请让我知道我可以做什么来修复它
我的html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width initial-scale=1">
        <title>Cocktail App</title>
        <link
        href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap"
      rel="stylesheet"/>
      <link rel="stylesheet" type="text/css" href="css/recipe.css">
      <script src="recipe.js"></script>
    </head>
    <body>
        <h2>YOUR ONE STOP SHOP FOR AMAZING COCKTAIL RECIPES!</h2>
        <div class="container">
            <button onclick="myFunction()" class="dropbtn"> Cocktails!!</button>
            <div id="myDropdown" class="search-container">
                <input type="text" placeholder="Choose cocktail..." id="myInput" onkeyup="filterFunction()">
                    <a href="#">Margarita</a>
                    <a href="#>Mojito</a>
                    <a href="#">Long Island tea</a>
                    <a href="#">Whiskey Sour</a>
            </div>
      </div>
      <div id="result"></div>
    </div>

    </body>
</html>

My javascript :

function myFunction() {
        document.getElementById("myDropdown").classList.toggle("show");
      }  
function filterFunction() {
        var input = document.getElementById("myInput");
        var filter = input.value.toUpperCase();
        var dropDown = document.getElementById("myDropdown");
        var link = dropDown.getElementsByTagName("a");
        for (i = 0; i < link.length; i++) {
          textValue = link[i].textContent || link[i].innerText;
          if (textValue.toUpperCase().indexOf(filter) > -1) {
            link[i].style.display = "";
          } else {
            link[i].style.display = "none";
          }
        }
}
1zmg4dgp

1zmg4dgp1#

首先尝试在#后面添加缺少的引号,in:<a href="#>Mojito</a>,然后看看它是否工作。
并从标记中删除“java”,因为这不是java,而是javascript:)

xesrikrc

xesrikrc2#

您需要一些CSS来定义类“show”,例如在HTML <head>中添加以下内容:

<style>
.hidden {
    display: none !important;
}
</style>

注意,我为了语义把类名改成了“hidden”而不是“show”。这样,当一个元素有类“hidden”时,它就不会显示出来。
现在相应地更改Javascript,以便添加和删除“hidden”类:

document.getElementById("myDropdown").classList.toggle("hidden");
4xrmg8kj

4xrmg8kj3#

我看不到你的css,但是你的.show类需要定义。在你的样式表中添加以下内容:

#myDropdown {
  display: none;
}

#myDropdown.show
{
  display: block;
}

工作中:
第一个

相关问题