OnClick -Dropdown菜单

时间:2013-11-14 05:20:20

标签: javascript html

我有点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>

这是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>

这是一种风格

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

到目前为止一切正常,但是如果我在菜单栏中再添加一个下拉菜单,它们就不起作用,因为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>

我该如何解决这个问题?请帮我一把 感谢

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

尝试使用'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>

答案 2 :(得分:0)

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

function show_menu(id)

像这样更改你的HTML

onClick="show_menu('IdOfTheDiv')"

对于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';                    
    }
}  
相关问题