[英]Javascript function as a variable in loop
你能幫我一個循環的功能嗎?
我有7個功能:
function menu1(){};
function menu3(){};
function menu4(){};
function menu5(){};
function menu6(){};
function menu7(){};
我需要做的是作為函數menux(){}加載,如果x == 3,則從循環中加載函數menu3()。
for(x=1;x=8;=x++)
{
function menux(){};
}
您可以將函數包裝到一個對象中:
function menu1(){};
function menu3(){};
function menu4(){};
function menu5(){};
function menu6(){};
function menu7(){};
var wrap={
menu1:menu1;
menu3:menu3;
menu4:menu4;
menu5:menu5;
menu6:menu6;
menu7:menu7;
}
然后,您可以將其歸納為:
for(x=1;x=8;=x++)
{
if(!wrap["menu"+i]) wrap["menu"+i]();
}
有很多方法可以執行此操作,您也可以執行以下操作:
function menu(int num){
switch(num)
{
case 1:
menu1();
break;
case 2:
menu2();
break;
//....
}
}
希望對您有所幫助。
您可能應該從更大的角度解釋您的情況以及您想要實現的目標。 這似乎已經不是最理想的方法。 但是,好了,你去:
for(var x=1; x<8; x++)
{
window['menu' + x]();
}
假設函數聲明在全局命名空間中,則此循環將調用從menu1
到menu7
所有這些函數。
您應該問自己-是否有其他方法。 當然是!
我建議您制作一個接受參數並根據其執行某些操作的function menu(x) {...}
,例如: function menu(x) {...}
如果第一個選項對您不可用,建議您使用以下方法來實現對象: var methods = { menu1: function() {}, menu2: function() {}, menu3: function() {}, ... }
使用eval
。 在這種情況下,請不要這樣做。 評估功能強大,但在這種情況下,這太過分了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.