javascript - 未捕获的类型错误:当我尝试在 chrome 中运行我的代码时,无法读取 null 的属性“addEventListener”
问题描述
因此,当我尝试在浏览器中运行我的 html 文件时,chrome 会记录该错误,但在 Visual Studio 代码中它不会记录任何问题。我该如何解决这个问题并确保它不会在未来发生?我的js代码:
const navbarBtn = document.querySelector("navbar__btn");
const navbarLinks = document.querySelector("navbar__links");
navbarBtn.addEventListener("click", function () {
let value = navbarLinks.classList.contains("navbar__collapse");
if (value) {
navbarLinks.classList.remove("navbar__collapse");
} else {
navbarLinks.classList.add("navbar__collapse");
}
});
解决方案
您的代码有两件事可能有问题。
在 html 准备好之前执行的脚本
您需要确保在加载所需的 html 后加载您的 JS。没有详细说明,两种好方法是:
在 html 文件的底部加载脚本
<script src="main.js"></script>
</body>
defer
在你的脚本上使用
<script defer src="./main.js"></script>
</head>
您的元素未正确加载
在您的示例中,您尝试像这样访问您的 DOM 元素:
const navbarBtn = document.querySelector("navbar__btn");
但是,这是在寻找自定义标签<navbar__btn>
。我相信您更有可能正在寻找具有“navbar__btn”类的标签,因此您必须添加一个点来引用一个类。
const navbarBtn = document.querySelector(".navbar__btn");
推荐阅读
- c# - Asp.net core 2.1 到 Asp.net 3.0 升级
- r - 36 核的 R 比 8 核的 R 慢得多
- java - Java 从 SMTP 服务器 * 获取 * 邮件
- terminal - 在 Alacritty 中逐字移动光标
- ios - iOS swift UICollectionView在滚动超过第一个屏幕后失去单元格约束
- java - JTextField setDocument 覆盖文本
- php - 如何在 Laravel 中绕过电子邮件
- javascript - 使用 vanilla javascript 在 iframe 中提取 textarea 的内容
- javascript - 在javascript函数中为html添加值
- javascript - 如何使用 webpack 捆绑 javascript 文件/Jquery 文件?