Javascript 未捕获类型错误:无法读取属性';增补列表器';当我尝试在chrome中运行我的代码时为null

Javascript 未捕获类型错误:无法读取属性';增补列表器';当我尝试在chrome中运行我的代码时为null,javascript,html,css,Javascript,Html,Css,因此,当我尝试在浏览器中运行html文件时,chrome会记录该错误,但在visual studio代码中不会记录任何问题。我如何解决这个问题并确保它不会在将来发生?我的js代码: const navbarBtn=document.querySelector(“navbar_uubtn”); const navbarLinks=document.querySelector(“navbar_u链接”); navbarBtn.addEventListener(“单击”),函数(){ 让value=

因此,当我尝试在浏览器中运行html文件时,chrome会记录该错误,但在visual studio代码中不会记录任何问题。我如何解决这个问题并确保它不会在将来发生?我的js代码:

const navbarBtn=document.querySelector(“navbar_uubtn”);
const navbarLinks=document.querySelector(“navbar_u链接”);
navbarBtn.addEventListener(“单击”),函数(){
让value=navbarLinks.classList.contains(“navbar_uu折叠”);
如果(值){
navbarLinks.classList.remove(“navbar__折叠”);
}否则{
navbarLinks.classList.add(“navbar__折叠”);
}

});对于要运行的jquery代码,它必须始终包含在$()中,而您在navbarBtn.addEventListener(“单击”,函数()中遗漏了$()){

试试这个:

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");
    } 
});
此外,如果单击按钮,Jquery会自动检测到addEventListener函数,因此您实际上不需要使用它

该代码还应适用于:

$(navbarBtn).on('click,function(){ 
    // your logic here
});

问题是,它找不到您试图将事件附加到的节点。因此它必须与
document.querySelector()方法的工作相关联

您可能希望发送节点的
id
class
,但这不是传递
id
class
值的正确方法

您应该将代码重写为

// If you are passing id    
const navbarBtn = document.querySelector("#navbar__btn");
const navbarLinks = document.querySelector("#navbar__links");


// If you are passing class
const navbarBtn = document.querySelector(".navbar__btn");
const navbarLinks = document.querySelector(".navbar__links");

请记住,如果您将
类作为参数传递,您将获得第一个元素。

您的代码有两个潜在错误

在html就绪之前执行的脚本 您需要确保在加载所需的html后加载JS。在不详细说明的情况下,有两种很好的方法:

在html文件的底部加载脚本

    <script src="main.js"></script>
</body>
您的元素没有正确加载 在您的示例中,您试图访问DOM元素,如下所示:

const navbarBtn = document.querySelector("navbar__btn");
但是,这是在寻找一个自定义标记
。我认为您更可能是在寻找一个具有“navbar\uu btn”类的标记,因此您必须添加一个点来引用一个类

const navbarBtn = document.querySelector(".navbar__btn");

如果
navbar\uuuu btn
是一个类,将
放在它前面,如果它是一个id,在它前面添加一个
,当前它正在尝试选择一个名为
navbar\uuu btn
的元素,你的脚本何时被调用?你有没有可能在html文件的部分加载你的脚本?很好。脚本应该总是执行一段时间后面是正文标签。
const navbarBtn = document.querySelector(".navbar__btn");