Js在没有“if”的两个选项之间切换

时间:2014-10-11 06:51:15

标签: javascript

我想知道是否在js中有一个内置命令允许我来回切换元素的两个状态。

我有一个例子:

mydiv.innerHTML = '<a href="#" onclick="this.innerHTML=\'Second_possible_value\';">Default value</a>';

我需要在“Default_value”和“Second_possible_value”之间切换。我不想写整个{} - else {}

onclick="this.innerHTML.MagicalSwitch('Second_possible_value'||'Default_value');"

有类似的东西吗?

3 个答案:

答案 0 :(得分:2)

你可以试试2 http://jsfiddle.net/or9d4aLk/

onclick="this.innerHTML = this.innerHTML == 'Default_value' ? 'Second_possible_value' : 'Default_value';"

或3 http://jsfiddle.net/or9d4aLk/1/

onclick="this.innerHTML = this.innerHTML == 'Default_value' ? 'Second_possible_value' : this.innerHTML != 'Third_possible_value' ? 'Third_possible_value' : 'Default_value';"

答案 1 :(得分:0)

你可以有两种方法。当一个方法完成后,它会将onclick事件切换到另一个方法。

有意义吗?

答案 2 :(得分:0)

执行此操作的好方法是不使用事件属性。请改用适当的系统(addEventListener)。然后你可以做这样的事情:

var mydiv = document.getElementById(&#39; mydiv&#39;);

&#13;
&#13;
(function() { // create a closure for our counting variable
  var i = 0, // to count how many times this has been run
    link = document.createElement('a');

  link.href = '#';
  mydiv.appendChild(link); // add the a element to the div
  link.innerHTML = 'Default_value';

  link.addEventListener('click', function() {
    if (i++ % 2) { // i.e. on even operations
                   // n.b we increment i
      link.innerHTML = 'Default_value';
    } else { // i.e. on odd-numbered operations
      link.innerHTML = 'Second_possible_value';
    }
  }, false);
}());
&#13;
<div id="mydiv"></div>
&#13;
&#13;
&#13;

当然,它比内联解决方案更冗长,但它将具有更好的性能并且更易于维护。它也更加灵活,因为我认为您的应用程序具有更多功能,而不仅仅是更改链接中的单词。