三元声明不起作用

时间:2016-05-07 04:49:49

标签: 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行旁边收到此错误消息:

  

"预期分配或函数调用,而是看到一个表达式。"

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

1 个答案:

答案 0 :(得分:4)

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

document.getElementById('nav').className = document.getElementById('nav').className == 'open' ? 'closed' : 'open';

以下是MDN中更容易理解的示例:

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