0

JavaScript 问题。今天早上我完全画了一个空白。

我有四个功能:

function create_account1(){  // some stuff  }
function create_account2(){  // some stuff  }
function create_account3(){  // some stuff  }
function create_account4(){  // some stuff  }

我现在需要遍历一些数字,如果满足条件,则调用适当的函数。由于我不知道我在循环中的哪个号码,我该怎么做?

简单的例子:

for( var i=1; i<=4; i++ ){
  create+i+(); 
}

那不起作用,我尝试了变化,但可以让它工作。

感谢您的任何建议。约翰C

4

4 回答 4

2

这些功能是否存在于全球范围内?

如果是这样,你可以使用这个:

for( var i=1; i<=4; i++ ){
  window["create_account" + i](); 
}

仅供参考:如果您想在 jsFiddle 中对此进行测试,请确保不要使用 jsFiddle 的onLoadonDomready wrap 设置。如果您尝试使用它们,您的函数将成为嵌套函数,显然不再属于窗口对象。

于 2013-09-12T11:49:25.110 回答
1

试试这个

 function mainfunc (){
    window[Array.prototype.shift.call(arguments)].apply(null, arguments);
 }

您传递的第一个参数应该是要调用的函数名,所有其余参数都将传递给被调用函数。在你的情况下,

mainfunc('create_account1');

或者

mainfun('create_account2', 'Name');

如果您需要为create_account2.

于 2013-09-12T11:53:25.840 回答
1

请这样做:

 for( var i=1; i<=4; i++ ){
  var fnName = 'create_account' + i ;
  //create+i+();
  window[fnName]();
}
function create_account1(){

  alert('Hello');

}
于 2013-09-12T11:55:40.200 回答
0

你不能像这样调用函数。我认为你正面临设计问题,正确的做法是这样的:

function create_account(accountID) {
    switch(accountID)
    {
        case 1: 
        {
            //account 1 logic.
            break;
        }
        case 2:
        {
            //account 2 logic.
            break;
        }
        etc...
    }
}

你这样称呼它

for( var i=1; i<=4; i++ ){
  create_account(i); 
}
于 2013-09-12T11:50:48.320 回答