我想知道是否在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');"
有类似的东西吗?
答案 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;);
(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;
当然,它比内联解决方案更冗长,但它将具有更好的性能并且更易于维护。它也更加灵活,因为我认为您的应用程序具有更多功能,而不仅仅是更改链接中的单词。