简体   繁体   English

手风琴垂直菜单栏页面刷新子菜单隐藏

[英]accordion vertical menu bar on page refresh sub menu hides

I've created a accordion vertical menu bar with reference to http://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_accordion_symbol 我已经创建了一个手风琴垂直菜单栏,参考http://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_accordion_symbol

I am facing a problem that on button click the submenu appears but since it is a click event the page refreshes and on page refresh the submenu hides again. 我遇到的问题是,在按钮单击时会出现子菜单,但由于它是单击事件,页面刷新并在页面刷新时子菜单再次隐藏。 This problem is annoying me very much, please help. 这个问题非常烦我,请帮忙。 This menu bar is for the project ASP.NET , C#. 此菜单栏用于项目ASP.NET,C#。

<div id="aside">

    <button class="accordion">Registration</button>
    <div class="panel">
        <ul class="submenu">
            <li><a href="NewRegister.aspx">Register</a></li>
            <li><a href="OldRegistration.aspx">Old Register</a></li>            
        </ul>
    </div>

    <button class="accordion">Configuration</button>
    <div class="panel">
        <ul class="submenu">
            <li><a href="NewRegister.aspx">Register</a></li>
            <li><a href="OldRegistration.aspx">Old Register</a></li>    
        </ul>
    </div>

    <button class="accordion">Reports</button>
    <div id="foo" class="panel">
        <ul class="submenu">
            <li><a href="NewRegister.aspx">Register</a></li>
            <li><a href="OldRegistration.aspx">Old Register</a></li>    
        </ul>
    </div>
    <!-- cd-accordion-menu -->

</div>

<script type="text/javascript">
    var acc = document.getElementsByClassName("accordion");
    var i;

    for (i = 0; i < acc.length; i++) {
        acc[i].onclick = function () {
            this.classList.toggle("active");
            var panel = this.nextElementSibling;
            if (panel.style.maxHeight) {
                panel.style.maxHeight = null;
            } else {
                panel.style.maxHeight = panel.scrollHeight + 'px';
            }
        }
    }
</script>

Change your button 's to div 's and remove the width:100% from the accordion. 将你的button更改为div 's并移除width:100%来自手风琴。 Here is a fiddle: https://jsfiddle.net/062ut3oL/ 这是一个小提琴: https//jsfiddle.net/062ut3oL/

HTML HTML

<div id="aside">

    <div class="accordion">Registration</div>
    <div class="panel">
        <ul class="submenu">
            <li><a href="NewRegister.aspx">Register</a></li>
            <li><a href="OldRegistration.aspx">Old Register</a></li>            
        </ul>
    </div>
    ...

CSS CSS

.accordion {
    background-color: #eee;
    color: #444;
    cursor: pointer;
    padding: 18px;
    border: none;
    text-align: left;
    outline: none;
    font-size: 15px;
    transition: 0.4s;
}

Explanation 说明

Using buttons in a ASP.NET page can be troublesome as they tend to cause a postback under some circumstances. 使用ASP.NET页面中的按钮可能很麻烦,因为它们在某些情况下往往会导致回发。

尝试在localStorage中保存当前页面并在javascript中加载页面阅读此信息并在菜单中添加一个类(例如选中)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM