JavaScript-不是函数

hrysbysz  于 2022-09-19  发布在  Java
关注(0)|答案(2)|浏览(178)

我正在尝试制作一个响应迅速的移动导航,它会在菜单项被点击时关闭,但我一直收到一个错误,尽管我在js文件中有其他脚本以相同的方式格式化。你能告诉我为什么我会收到这个错误吗?

错误消息:“未捕获类型错误:navLink.addEventListener不是函数

JS:

{
    let navLink = document.getElementsByClassName("menu-item");
    //let navLink = document.querySelector(".menu-item a");

    navLink.addEventListener("click", () => {
        if (document.querySelector(".nav-header").className === "nav-header responsive") {
            document.querySelector(".nav-header").classList.remove(" responsive");
        }
        else {
            return;
        }
    });
}

如果我更改变量规则或任何东西,我也会收到错误xxx is NULL,所以它可能是从那里产生的?

let navLink = document.querySelector(".menu-item a");

错误消息:“未捕获类型错误:NavLink为空

pes8fvy9

pes8fvy91#

getElementsByClassName()返回一个元素数组,因为页面上的多个元素可以具有相同的类名。

假设页面上有多个这样的元素,您可以使用for循环为每个元素添加一个事件侦听器。

let navLink = document.getElementsByClassName("menu-item");

for(let element of navLink) {
  element.addEventListener("click", () => {
    // code here
  })
}

文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

8dtrkrch

8dtrkrch2#

GetElementsByClassName返回一个元素数组。因此,您可能希望针对它们的特定索引:var NavLink[0].addEventListener(...)应该能让你得到你想要的。

相关问题