简体   繁体   English

导航图标在单击时不显示菜单

[英]Nav icon not showing menu when clicked on

Ideally, when I click on the nav icon, it will show a menu in which user can click on to navigate. 理想情况下,当我单击导航图标时,它将显示一个菜单,用户可以在其中单击进行导航。 However, it looks like the javascript isn't recognizing that the nav icon is being clicked on. 但是,似乎javascript无法识别正在导航的导航图标。

What it suppose to do is add the "open" class to the nav-main when the nav-icon is clicked on. 假定要做的是在单击导航图标时将“打开”类添加到导航主目录。

Nav source code: 导航源代码:

<nav class="nav-main">
    <ul class="nav-list">
        <li>
            <a class="nav-logo" href="index.html">
                <img src="assets/logo/logo.png" alt="Logo" style="width: 50px; height: 45px;">
            </a>
        </li>
        <li class="with-sub">
            <a class="hvr-underline-from-center">
                <span> Projects</span>
                <svg width="9" height="5">
                    <polyline class="sub-arrow" fill="none" stroke="#999" points=".5 .5 4.5 4.5 8.5 .5"></polyline>
                </svg>
            </a>
            <ul class="sub">
                <li>
                    <a class>Test</a>
                </li>
                <li>
                    <a class>Test</a>
                </li>
                <li>
                    <a class>Test</a>
                </li>
                <li>
                    <a class>Test</a>
                </li>
                <li>
                    <a class>Test</a>
                </li>
                <li>
                    <a class>Test</a>
                </li>

            </ul>


        </li>
        <li>
            <a class="hvr-underline-from-center"> About </a>
        </li>
        <li>
            <a class="hvr-underline-from-center" href="Contact/index.html"> Contact </a>
        </li>
        <li>
            <a class="hvr-underline-from-center" href="#footer-nav"> Navigate </a>
        </li>
    </ul>
    <span class="nav-icon">
        <svg width="18" height="11" viewBox="0 0 18 11">
          <path fill="#000" fill-rule="evenodd" d="M0,10 L18,10 L18,11 L0,11 L0,10 Z M0,5 L18,5 L18,6 L0,6 L0,5 Z M0,0 L18,0 L18,1 L0,1 L0,0 Z"></path>
        </svg>
      </span>

</nav>

Javascript code: JavaScript代码:

document.addEventListener("DOMContentLoaded", function() {
    var nav = document.querySelectorAll(".nav-main")[0];
    if (nav !== undefined) {
        var navIcon = nav.querySelector(".nav-icon");
        var list = nav.querySelector(".nav-list");
        if (navIcon) {
            navIcon.addEventListener("click", function() {
                nav.classList.toggle("open");
                document.body.classList.toggle("no-scroll");
                list.scrollTop = 0;
                document.querySelector("html").classList.toggle("no-scroll")
            })
        }
        var subs = document.querySelectorAll(".with-sub");
        for (i = 0, len = subs.length; i < len; i++) {
            sub = subs[i];
            sub.addEventListener("click", function(event) {
                var target;
                target = event.currentTarget.querySelector(".sub");
                target.classList.toggle("active")
            })
        }
    }
});

Your javascript appears to be working fine, but what about the css classes that are controlled by the javascript? 您的javascript似乎运行良好,但是由javascript控制的css类呢?

If I understand your problem correctly, I think you're needing something like this: 如果我正确理解了您的问题,则认为您需要这样的东西:

 document.addEventListener("DOMContentLoaded", function() { var nav = document.querySelectorAll(".nav-main")[0]; if (nav !== undefined) { var navIcon = nav.querySelector(".nav-icon"); var list = nav.querySelector(".nav-list"); if (navIcon) { navIcon.addEventListener("click", function() { nav.classList.toggle("open"); document.body.classList.toggle("no-scroll"); list.scrollTop = 0; document.querySelector("html").classList.toggle("no-scroll") }) } var subs = document.querySelectorAll(".with-sub"); for (i = 0, len = subs.length; i < len; i++) { sub = subs[i]; sub.addEventListener("click", function(event) { var target; target = event.currentTarget.querySelector(".sub"); target.classList.toggle("active") }) } } }); 
 .hover-cursor { cursor: pointer; } .nav-main .nav-list { display: none; } .nav-main.open .nav-list { display: block; } .sub { display: none; } .sub.active { display: block; } 
 <nav class="nav-main"> <span class="nav-icon hover-cursor"> <svg width="18" height="11" viewBox="0 0 18 11"> <path fill="#000" fill-rule="evenodd" d="M0,10 L18,10 L18,11 L0,11 L0,10 Z M0,5 L18,5 L18,6 L0,6 L0,5 Z M0,0 L18,0 L18,1 L0,1 L0,0 Z"></path> </svg> </span> <a class="nav-logo" href="index.html"> <img src="https://www.google.com/logos/doodles/2018/holidays-2018-northern-hemisphere-day-3-5708260869931008-s.png" alt="Logo"> </a> <ul class="nav-list"> <li class="with-sub"> <a class="hvr-underline-from-center hover-cursor"> <span>Projects</span> <svg width="9" height="5"> <polyline class="sub-arrow" fill="none" stroke="#999" points=".5 .5 4.5 4.5 8.5 .5"></polyline> </svg> </a> <ul class="sub"> <li> <a class>Test</a> </li> <li> <a class>Test</a> </li> <li> <a class>Test</a> </li> <li> <a class>Test</a> </li> <li> <a class>Test</a> </li> <li> <a class>Test</a> </li> </ul> </li> <li> <a class="hvr-underline-from-center"> About </a> </li> <li> <a class="hvr-underline-from-center" href="Contact/index.html"> Contact </a> </li> <li> <a class="hvr-underline-from-center" href="#footer-nav"> Navigate </a> </li> </ul> </nav> 

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

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