使用javascript单击按钮时如何在两个不同的功能之间切换?

时间:2018-04-13 09:22:45

标签: javascript function toggle

点击按钮我正在调用此功能

toggleFunction(){
    //Do something here to toggle between function A and function B
}

A(){} //Call this first
B(){} //Call this after

如何以简单的方式在javascript中实现?

提前多多感谢!

3 个答案:

答案 0 :(得分:3)

您必须使用变量来管理切换:

var toggle = true;

toggleFunction(){
    toggle ? functionA() : functionB();
    toggle = !toggle;
}

functionA() {}
functionB() {}

答案 1 :(得分:1)

正如@Faly所说,你需要一个变量来切换。

新方法是使用booleannumber投射到~~

function A() {console.log('A');
function B() {console.log('B');
var funcs = [A,B]; 
var bool = false; 
function toggleFunction() { 
  funcs[~~bool](); 
  bool = !bool; 
}

答案 2 :(得分:0)

设置一个lastInvokedIndex属性,该属性将保存上次调用的方法名称

btn.addEventListener( "click", function(e){
  var methodsToInvoke = [ A, B ];
  var el = e.currentTarget;
  //el.lastInvokedIndex = el.lastInvokedIndex || 0;
  el.lastInvokedIndex = el.lastInvokedIndex >= methodsToInvoke.length ? 0 : (el.lastInvokedIndex || 0);
  methodsToInvoke[el.lastInvokedIndex++]();
});

<强>演示

&#13;
&#13;
var A = () => { console.log("A") };
var B = () => { console.log("B") };

var btn = document.querySelector( "button" );

btn.addEventListener( "click", function(e){
  var methodsToInvoke = [ A, B ];
  var el = e.currentTarget;
  //el.lastInvokedIndex = el.lastInvokedIndex || 0;
  el.lastInvokedIndex = el.lastInvokedIndex >= methodsToInvoke.length ? 0 : (el.lastInvokedIndex || 0);
  methodsToInvoke[el.lastInvokedIndex++]();
});
&#13;
<button>Click</button>
&#13;
&#13;
&#13;