【发布时间】:2018-07-17 11:59:01
【问题描述】:
所以我正在尝试创建我的第一个开关/案例功能,但我无法弄清楚它为什么不起作用。我添加了一个控制台输出来测试案例是否有效,看起来确实有效,但它从不更新类名:
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 ,然后在每种情况下都相同。
【问题讨论】:
-
试试
menu.classList.add('on')或menu.classList.remove('on') -
将此
var menu = document.getElementById("sidebar").className更改为此var menu = document.getElementById("sidebar")基本上,您正在尝试从字符串访问属性className。 -
您正在向本地字符串添加一个名为
className的属性。 -
@Ele 这就是我试图开始的。 Slaawwa,所以我写的是
menu.classList.remove('on'),而不是console.log('Classname should now be "off"')?试过了,还是没有。我现在看到 JsFiddle 正在抛出一个合适的说法Uncaught ReferenceError: menuSwitch is not defined at HTMLButtonElement.onclick ((index):81)。这在我的生活环境中不会发生,所以现在 JsFiddle 似乎对测试毫无价值。
标签: javascript function switch-statement