javascript - 导航栏的下拉列表

标签 javascript

目前,我正在使用 HTML、CSS 和 JS 构建导航栏。我遇到了 JS 部分的问题,该部分应该使切换按钮下拉并在调整页面大小时显示所有可用的链接。当我调试代码时,我收到一条错误消息,指出“无法读取 null 的属性‘addEventListener’”。我该如何解决这个问题?

HTML

    <div class='Navbar'>

 <a href=''>EVENTS</a>

 <a href=''>FOOD</a>

 <a href=''>FUN</a>

 <img id='center-logo' src='img/SAMO.png'>  

        <a href=''>VISIT</a>

        <a href=''>GET INVOLVED</a>

        <a href=''>HISTORY</a> 

        <div style="font-size: 20px;" id='Navbar_Link-Toggle'>

            <i class="fas fa-bars"></i>

        </div> 

    </div>    

CSS

@media only screen and (max-width: 1000px) {

  img,

  .Navbar {

    text-align: left;

    margin-top: 2%;

  }

  a {

margin-left: 0;


    display: none;

  }

  .Navbar__ToggleShow {

    display: flex;

  }

#Navbar_Link-Toggle {

  align-self: flex-end;

  display: initial;

  float: right;

  margin-top: 2%;

}

}

JS

const toggle = document.querySelector('#Navbar_Link-Toggle');

const nav = document.querySelector('#Navbar_Link-Toggle')

const toggleMenu = () => {

  const tags = document.getElementsByTagName('a');

    tags.forEach(tag => 

tag.classList.toggle('Navbar__ToggleShow'));

}

nav.addEventListener('click', toggleMenu);

最佳答案

你不能直接迭代nodelist,因为typeyof nodelist不是array而是object,因此要迭代相同的,你有首先使用Array.prototype.forEach.call将nodelist转换为数组,请将JS代码替换为以下代码并查看:

const toggle = document.querySelector('#Navbar_Link-Toggle');

const nav = document.querySelector('#Navbar_Link-Toggle')

const toggleMenu = () => {

const tags = document.getElementsByTagName('a');

Array.prototype.forEach.call(tags, function (tag) {
 console.log(tag);
 tag.classList.toggle('Navbar__ToggleShow');
});

}

nav.addEventListener('click', toggleMenu);

关于javascript - 导航栏的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238664/

相关文章:

javascript - 带有动态标志的 Angular ng-hide

Javascript 变量范围无法正常工作

javascript - JWPlayer - 禁止点击视频暂停/恢复?

javascript - 调用 React 函数不起作用

javascript - 突出显示事件 anchor 链接

javascript - 具有更新内容的 AngularJS 固定列表

javascript - AngularJS 路由行为不符合预期,没有任何错误

javascript - 根据其实现在不同的浏览器版本上使用 Notification.requestPermission

javascript - 使用 javascript 的动态表单验证

javascript - Vuejs : how do you pass class(classes) to template?