[英]Toggle CSS Classes using JavaScript - Error
I'm trying to make a Script that when a user clicks in an image with the class "burger-nav-img" it toggles the class "open" in another elements. 我正在尝试制作一个脚本,当用户单击带有“ burger-nav-img”类的图像时,它将在另一个元素中切换“打开”类。 My code is:
我的代码是:
HTML
的HTML
<nav class="main-nav">
<ul class="flex-container">
<li class="flex-content"><a href="#">Home</a></li>
<li class="flex-content"><a href="#">Articles</a></li>
<div class="logo_container flex-container">
<img src="img\logo_background.png" class="logo flex-content">
</div>
<li class="flex-content"><a href="#">Support</a></li>
<li class="flex-content"><a href="#">Login</a></li>
</ul>
<a class="burger-nav">
<img src="img/menu.png" id="burger" class="burger-nav-img">
</a>
JavaScript
的JavaScript
document.body.addEventListener("load", clas);
function clas() {
document.getElementsByClassName("burger-nav-img").addEventListener("load", toggl);
}
function toggl() {
const burger = document.getElementsByClassName("burger-nav");
burger.classList.toggle("open");
const main = document.getElementsByClassName("main-nav");
main.classList.toggle("open");
}
The problem is that when I run this code an error appears and I can't figure out what to do: 问题是,当我运行此代码时,出现错误并且我不知道该怎么办:
Console
安慰
menu.js:7 Uncaught TypeError: Cannot read property 'toggle' of undefined
at toggl (menu.js:7)
at clas (menu.js:3)
at menu.js:1
toggl @ menu.js:7
clas @ menu.js:3
(anonymous) @ menu.js:1
Note: menu.js is the file containing the JavaScript Code; 注意:menu.js是包含JavaScript代码的文件;
What should I do? 我该怎么办? Thank You For Your Attention!
感谢您的关注!
getElementsByClassName
returns an array of elements, and an array doesn't have classList property, and therefore you get undefined. getElementsByClassName
返回一个元素数组,并且该数组没有classList属性,因此您未定义。
Use burger[0].classList
or use an Id and getElementById
that returns a single element. 使用
burger[0].classList
或使用返回单个元素的Id和getElementById
。
burger
返回一个集合,所以你应该做类似的事情
for (let i = 0; i < burger.length; i++) { burger[i].classList.toggle("open"); }
Ok after some research and a lot of attempts to solve the problem I finally got it. 经过一些研究和尝试解决问题的确定,我终于明白了。 This is my final JavaScript Code:
这是我最后的JavaScript代码:
document.getElementById("burger").onclick = toggl;
function toggl() {
console.log("OK");
var burger = document.getElementById("burger-nav");
var main = document.getElementById("main-nav");
if (burger.classList.contains("open")) {
console.log("OKEY-DOKEY");
burger.classList.remove("open");
main.classList.remove("open");
} else {
console.log("OK-OK");
burger.classList.add("open");
main.classList.add("open");
}
}
Thanks to Everyone who helped me! 感谢所有帮助我的人! I appreciated It a lot!
我非常感激!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.