javascript - 使用 JavaScript 切换 CSS 类 - 错误
问题描述
我正在尝试制作一个脚本,当用户单击具有“burger-nav-img”类的图像时,它会在另一个元素中切换“open”类。我的代码是:
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
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");
}
问题是当我运行此代码时出现错误,我不知道该怎么做:
安慰
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
注意:menu.js 是包含 JavaScript 代码的文件;
我应该怎么办?感谢您的关注!
解决方案
getElementsByClassName
返回一个元素数组,并且一个数组没有 classList 属性,因此您得到未定义。
使用burger[0].classList
或使用 Id 并getElementById
返回单个元素。
推荐阅读
- c++ - 无法使用 std::function 作为参数类型(需要函数指针版本)宁愿模板像 STL 但它不能推断参数
- javascript - indexOf 到 some() javaScript
- r - 如何在不使用循环的情况下为两个不同的条件返回逻辑向量“y”
- docker - 使用第二个 docker-compose 文件运行之前设置的容器后出错
- html - 更改不透明 div 中存在的图像的不透明度
- asp.net - 如何使用具有 ArrayList 多个值的中继器作为多个 td 中的一个 tr?
- c++ - c++ 请我不知道这里有什么问题
- javascript - 在渲染方法中将道具传递给组件?
- ios - 当 UIActivityViewController 处于活动状态时,视图出现在背景/背景后面
- tree - 树分解中的分隔符概念是什么?