javascript - JS:切换/案例更改类名不起作用
问题描述
所以我正在尝试制作我的第一个开关/案例功能,但我无法弄清楚它为什么不起作用。我添加了一个控制台输出来测试案例是否有效,看起来确实有效,但它从不更新类名:
function menuSwitch() {
var menu = document.getElementById("sidebar").className;
switch(menu) {
case "on":
menu.className = "off";
console.log('Classname should now be "off"')
break;
case "off":
menu.className = "on";
console.log('Classname should now be "on"')
break;
}
}
https://jsfiddle.net/o39e05ag/2/
我错过了什么?我也尝试从变量中删除 .className ,但什么也没有。也没有错误。该函数也在我的 js 的最后,以确保没有任何干扰(也没有相同的名称)。
编辑:只是纯 JS。我不是在寻找 jQuery!
编辑2:解决。我需要在 var 之后的 switch 中定义它,而不是 var 中的 .className ,然后在每种情况下都相同。
解决方案
在里面switch()
你没有使用menu
作为参考Element
。相反,您使用的className
基本上是一个字符串。因此,您将无法使用menu.className
:
改变
var menu = document.getElementById("sidebar").className;
switch(menu) {
到
var menu = document.getElementById("sidebar");
switch(menu.className) {
function menuSwitch() {
var menu = document.getElementById("sidebar");
switch(menu.className) {
case "on":
menu.className = "off";
console.log('Classname should now be "off"')
break;
case "off":
menu.className = "on";
console.log('Classname should now be "on"')
break;
}
}
.on{
display: none;
}
<button onclick="menuSwitch()">Toggle menu</button>
<div id="sidebar" class="on">
Test
</div>
推荐阅读
- java - Selenium By.className() -> IndexOutOfBoundsException:索引:0,大小:0
- python - 改进迭代工具
- ssl - 当我使用 127.0.0.1 作为代理时,我无法访问任何网站
- docker - Docker容器-向其中注入敏感数据的最佳实践是什么
- node.js - 如何显示不同语言的页面?
- bash - 使用 ProxyCommand 和 BASH 脚本的 SSH 配置动态端口
- javascript - 如何检测官方 YouTube 页面的 JavaScript 视图/内容何时发生变化?
- java - 由于 JPanel 油漆,Java GUI 中的按钮消失了吗?
- python - 如何用有限的内存构建 python?
- python - 当我尝试使用 mkdir 创建新文件夹时出现问题 - PermissionError: [WinError 5]