javascript - 三元语句不起作用

标签 javascript ternary-operator

1.  document.getElementById('navButton').addEventListener('click', toggleNav);
2.  document.getElementById('menuButton').addEventListener('click', toggleMenu);
3.  function toggleNav(){
4.    document.getElementById('nav').className == 'open' ? 'closed' : 'open';
5.    document.getElementById('navButton').className == 'open' ? 'closed' : 'open';
6.  }
7.  function toggleMenu(){
8.    document.getElementById('menu').className == 'open' ? 'closed' : 'open';
9.    document.getElementById('menuButton').className == 'open' ? 'closed' : 'open';
10. }

在上面的代码中,我在第 4、5、8 和 9 行旁边收到以下错误消息:

"Expected an assignment or function call and instead saw an expression."

我以前从未遇到过这个问题,如果我只是更改 document.getElementById('nav').className == 'open' ? 'closed' : 'open';document.getElementById('nav').className = 'open';,效果很好。我做错了什么?

最佳答案

您没有将三元返回值分配给任何东西。你需要做这样的事情:

document.getElementById('nav').className = document.getElementById('nav').className == 'open' ? '关闭' : '打开';

这是来自 MDN 的示例更容易消化:

var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
    ^^^^^^^^^^   ^^^^^^^^^^^   ^^^^^   ^^^^^^^
//  assignment    condition    expr1    expr2

关于javascript - 三元语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37084612/

相关文章:

javascript - ReactJS 更新输入的 onChange 简单数组

javascript - 数组过滤器方法不返回 trim 值

reactjs - 需要在 JSX 中设置条件的帮助

c# - 我可以使用三元运算符来设置泛型方法参数吗?

javascript - 三元运算符内的赋值,反模式?

java - 为什么不能在没有赋值的情况下使用三元运算符(左侧的变量)?

javascript用逗号分割字符串忽略引号内

javascript - 从数组的javascript数组中获取未定义

javascript - 如何在 Symfony 3 中获取 ajax 请求的 post 参数

php - 什么是 ? : in PHP 5. 3?