请你帮我一个功能循环:
我有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(){};
}
答案 0 :(得分:1)
您可以将函数包装到对象中:
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:
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;
//....
}
}
我希望它有所帮助。
答案 1 :(得分:0)
您应该解释一下您的情况以及您希望从更大的角度实现的目标。这似乎已经是一种次优的方法。但是,好的,你走了:
for(var x=1; x<8; x++)
{
window['menu' + x]();
}
假设您的函数声明在全局命名空间中,此循环将调用从menu1
到menu7
的所有函数。
答案 2 :(得分:0)
你应该问自己 - 如果有不同的方式。当然是这样!
我建议你创建一个接受参数的函数,并根据它做一些事情:
function menu(x) {...}
如果您没有第一个选项,我建议您使用以下方法实现一个对象:
var methods = {
menu1: function() {},
menu2: function() {},
menu3: function() {},
...
}
使用eval
。在这种情况下请不要这样做。 Eval很强大,但在这种情况下,这是一种过度杀伤。