[英]How to toggle between two different functions when a button is clicked using javascript?
在單擊按鈕時,我正在調用此功能
toggleFunction(){
//Do something here to toggle between function A and function B
}
A(){} //Call this first
B(){} //Call this after
如何以簡單的方式在javascript中實現?
在此先多謝!
您必須使用變量來管理切換:
var toggle = true;
toggleFunction(){
toggle ? functionA() : functionB();
toggle = !toggle;
}
functionA() {}
functionB() {}
正如@Faly所說,您需要一個變量來切換。
新方法是使用~~
將boolean
轉換為number
。
function A() {console.log('A');
function B() {console.log('B');
var funcs = [A,B];
var bool = false;
function toggleFunction() {
funcs[~~bool]();
bool = !bool;
}
設置一個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++]();
});
演示
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.