javascript OnClick - 下拉菜单

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19970133/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 17:24:16  来源:igfitidea点击:

OnClick -Dropdown Menu

javascripthtml

提问by abcid d

I have a bit Javascript, which controls the drop down menu when it is on click

我有一些 Javascript,它在单击时控制下拉菜单

<script>
function show_menu(){
    var menu = document.getElementById('dropdown_menu');

    if(menu.style.display == 'block'){
        menu.style.display = 'none';
    }else {
        menu.style.display = 'block';                    
    }
}
</script>

Here is HTML

这是 HTML

<nav>
    <div class="dropdown_button" class="menu_button" onClick="show_menu()">Schedule 1</div>
    <div id="dropdown_menu" class="hidden_menu">
        <ul>
            <li>option 1</li>
            <li>option 2</li>
        </ul>           
    </div>
</nav>

Here is a style

这是一种风格

<style>
.hidden_menu{display:none}
</style>

Everything works fine so far, but if I add one more dropdown set into the menu bar, they don't work because ID="dropdown_menu" is for only one element, not for another one.

到目前为止一切正常,但如果我在菜单栏中再添加一组下拉菜单,它们将不起作用,因为 ID="dropdown_menu" 仅适用于一个元素,而不适用于另一个元素。

<nav>
        <div class="dropdown_button" class="menu_button" onClick="show_menu()">Schedule 1</div>
        <div id="dropdown_menu" class="hidden_menu">
            <ul>
                <li>option 1</li>
                <li>option 2</li>
            </ul>           
        </div>

<div class="dropdown_button" class="menu_button" onClick="show_menu()">Schedule 2</div>
        <div id="dropdown_menu" class="hidden_menu">
            <ul>
                <li>option 3</li>
                <li>option 4</li>
            </ul>           
        </div>
    </nav>

How can I solve this problem? please give me a hand. Thanks

我怎么解决这个问题?请帮我一把。谢谢

回答by Janny

As I look at the code, in both places the ID is the same <div id="dropdown_menu" class="hidden_menu">

当我查看代码时,两个地方的 ID 是相同的 <div id="dropdown_menu" class="hidden_menu">

You should give different IDs for different divs and you can pass some parameter in the JavaScript method to identify the div inside the script.

您应该为不同的 div 提供不同的 ID,并且您可以在 JavaScript 方法中传递一些参数来标识脚本中的 div。

回答by Ankit Tyagi

Try using 'this' :

尝试使用“这个”:

function show_menu(this){
    var menu = this.firstChild;
    // or 
    // var menu = this.children[0];  

    if(menu.style.display == 'block'){
        menu.style.display = 'none';
    }else {
        menu.style.display = 'block';                    
    }
}

<nav>
        <div class="dropdown_button" class="menu_button" onClick="show_menu(this)">Schedule 1</div>
        <div id="dropdown_menu" class="hidden_menu">
            <ul>
                <li>option 1</li>
                <li>option 2</li>
            </ul>           
        </div>

<div class="dropdown_button" class="menu_button" onClick="show_menu(this)">Schedule 2</div>
        <div id="dropdown_menu" class="hidden_menu">
            <ul>
                <li>option 3</li>
                <li>option 4</li>
            </ul>           
        </div>
</nav>

回答by Shadow

try to send the id as argument of the div you want to show and all ids to unique ones

尝试将 id 作为要显示的 div 的参数发送,并将所有 id 发送到唯一的

function show_menu(id)

change your html like this

像这样改变你的html

onClick="show_menu('IdOfTheDiv')"

For EX:

对于 EX:

<div class="dropdown_button" class="menu_button" onClick="show_menu('dropdown_menu')">Schedule 1</div>

function show_menu(id){
    var menu = document.getElementById(id);

    if(menu.style.display == 'block'){
        menu.style.display = 'none';
    }else {
        menu.style.display = 'block';                    
    }
}