Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在函数名后附加一个数字来创建多个函数?_Javascript - Fatal编程技术网

Javascript 如何在函数名后附加一个数字来创建多个函数?

Javascript 如何在函数名后附加一个数字来创建多个函数?,javascript,Javascript,我有一个功能,负责一些验证,禁用和启用一些文本框和一组单选按钮 现在我想使用for循环生成要从另一个函数调用的函数名,然后将for循环索引附加到所讨论的函数 像这样的 function unCheckRadio(num) { var cont = num; var form = document.angular; for (var i = 0; i < cont; i++) { alert(form['lim_set'+i].length); fo

我有一个功能,负责一些验证,禁用和启用一些文本框和一组单选按钮

现在我想使用for循环生成要从另一个函数调用的函数名,然后将for循环索引附加到所讨论的函数

像这样的

function unCheckRadio(num) 
{
  var cont = num;
  var form = document.angular;

  for (var i = 0; i < cont; i++) 
  {
     alert(form['lim_set'+i].length);
     for(var j = 0; j < form['lim_set'+i].length; j++ )
     {
       form['lim_set'+i][j].checked = form['lim_set'+i][j].defaultChecked;
     }
     makeChoice_ang();
  }

}
函数取消勾选(num)
{
var cont=num;
var form=document.angular;
对于(变量i=0;i
这里我想把索引i附加到makeChoice_ang()函数中

尝试了很多方法。。。。但是不行

我试着用这个作出选择

但这使它成为一根弦

请帮帮我,或者至少给我指出正确的方向


万分感谢

如果我正确理解您的意图:

eval('makeChoice_ang'+i+'()');

这将调用由该字符串连接创建的函数。如果
i=5
,那么它将调用
makeChoice\u ang5()

似乎更容易将
makeChoice\u ang()
作为一个接受索引作为参数的通用函数重新执行。或者,如果您无法更改函数,或者如果函数之间的行为差异很大,您可以使用
eval()
来计算字符串。

在javascript中,函数被视为普通变量,就像字符串或int一样。显然,它们有一些额外的功能,但您可以以相同的方式使用它们,例如,可以在一个数组中存储多个函数,或者将一个函数传递给另一个函数。考虑到这一点,我看不出有任何必要以您尝试的方式命名函数

我希望我能为你的具体问题提供更多的帮助,但这有点难以理解,对不起

您可以尝试更改
unCheckRadio
函数,使其将函数作为参数:

function unCheckRadio(num, func) { ... }
然后你会这样称呼它:

function unCheckRadio(5, function() {
    // do whatever here.
});

制作一个对象,将函数放入其中。在此对象中为每个“makeChoice_ang”+i函数创建一个方法。然后可以通过该对象调用这些函数

var f = {
   makeChoice_ang1: function(){
      alert('1');
   },
   makeChoice_ang2: function(){
      alert('2');
   }
}

for(var i = 1; i < 3;i++)
   f['makeChoice_ang' + i]();
var f={
makeChoice_ang1:function(){
警报(“1”);
},
makeChoice_ang2:function(){
警报(“2”);
}
}
对于(变量i=1;i<3;i++)
f['makeChoice_ang'+i]();
我添加这个作为一个不同的答案,因为它是不同的

如果您想调用一个全局函数(或任何您知道其作用域的函数),只要使用这样的后缀,就可以使用数组表示法:

window['makeChoice_ang' + i]();

记住。。。eval是邪恶的

数组可能会更容易。是的,我读了其他答案后意识到了这一点。不过,这里的优势(如果这是一个优势的话)是,您有函数的名称。谢谢大家。。。。工作得很有魅力。。。也感谢所有其他人。。。我无法使用数组,这就是为什么我要进行此修复。。。我应该提到。。。非常感谢堆栈溢出