如何在Javascript中使用for调用动态命名的方法

asw*_*zen 0 javascript jquery dynamic-function

我有两个动态命名的JavaScript函数..

function a1(){
   //some codes
}

function a2(){
   //some codes
}

function a3(){
   //some codes
}
Run Code Online (Sandbox Code Playgroud)

这些函数上面由PHP生成肯定..

<?php 
  for($i = 1; $i <= $load_period->count; $i++){ 
?>
  <script type="text/javascript">
  function a<?php echo $i;?>(){
     //javascript functions
  }
  </script>
<?php 
  } 
?>
Run Code Online (Sandbox Code Playgroud)

现在我必须调用这两个函数..

for(var i= 1; i <= 3; i++){
   // here the solution code .. 
   // doesn't work >> a+i+();
}
Run Code Online (Sandbox Code Playgroud)
  • 注意1:它不适用于"a + i +();" .
  • 注2:我不想使用"EVAL"语法

谢谢你的解决方案..

Dav*_*und 9

如果功能可全局访问,您可以编写

window['a'+i]()
Run Code Online (Sandbox Code Playgroud)

否则,您可以重写代码以将所有函数添加到一个变量:

var f = {
    a1: function() { },
    a2: function() { },
    a3: function() { }
};
Run Code Online (Sandbox Code Playgroud)

......并打电话f['a'+i]().

如果你正在重写,因为所有函数都是由索引命名的,你不妨写一下:

var myFunctions = [
  function() { },
  function() { },
  function() { }
];
Run Code Online (Sandbox Code Playgroud)

......并打电话myFunctions[i]().(当然,正如Felix Kling在评论中指出的那样,i这里必须调整为0).