如何创建动态调用javascript函数

时间:2013-09-12 11:48:03

标签: javascript

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

这不起作用,我尝试过各种变体,但可以让它发挥作用。

感谢您的任何建议。 johnC

4 个答案:

答案 0 :(得分:2)

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

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

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

仅供参考:如果你想在jsFiddle中测试它,请确保使用jsFiddle的 onLoad onDomready 包装设置。如果您尝试使用它们,您的函数将成为嵌套的函数,这些函数显然不再属于 window 对象。

答案 1 :(得分:1)

试试这个

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

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

mainfunc('create_account1');

mainfun('create_account2', 'Name');

如果您需要传递create_account2的名称。

答案 2 :(得分:1)

请这样做:

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

  alert('Hello');

}

答案 3 :(得分: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); 
}