En cliquant sur un bouton, j'appelle cette fonction

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

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

Comment puis-je implémenter en javascript de manière simple?

Merci beaucoup d'avance!

0
Ramya S 13 avril 2018 à 12:22

3 réponses

Meilleure réponse

Vous devez utiliser une variable pour gérer le basculement:

var toggle = true;

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

functionA() {}
functionB() {}
3
ExillustX 7 déc. 2018 à 05:05

Définissez une propriété lastInvokedIndex qui enregistrera le dernier nom de méthode invoqué

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++]();
});

Démo

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++]();
});
<button>Click</button>
0
gurvinder372 13 avril 2018 à 09:39

Comme le dit @Faly, vous avez besoin d'une variable pour basculer.

La nouvelle façon consiste à caster un boolean en number avec ~~.

function A() {console.log('A');
function B() {console.log('B');
var funcs = [A,B]; 
var bool = false; 
function toggleFunction() { 
  funcs[~~bool](); 
  bool = !bool; 
}
1
AjAX. 13 avril 2018 à 09:46