我有一个功能,负责一些验证,禁用和启用一些文本框和一组单选按钮....
现在我想使用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();
}
}
这里我想将索引i附加到makeChoice_ang()函数....
尝试了许多方法......但是没有去......我尝试使用这个....'makeChoice_ang'+ i;
但这使它成为一个字符串......
请帮助我或至少指出我正确的方向....
提前感谢一百万人!
答案 0 :(得分:5)
我将此作为一个不同的答案添加,因为,它是不同的!
如果你想调用一个全局函数(或任何你知道其范围的函数)给出这样的后缀,那么你可以使用数组表示法:
window['makeChoice_ang' + i]();
记住...... eval是邪恶的mostly
答案 1 :(得分:3)
似乎将makeChoice_ang()
重新作为接受索引作为参数的泛型函数会更容易。或者,如果您无法更改功能,或者行为因功能而异,您可以使用eval()
来评估您的字符串。
答案 2 :(得分:2)
创建一个将函数放入的对象。为每个'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]();
答案 3 :(得分:1)
如果我理解你正在尝试做什么:
eval('makeChoice_ang'+i+'()');
这将调用由该字符串连接创建的函数。如果i = 5
,则会调用makeChoice_ang5()
。
答案 4 :(得分:0)
在javascript中,函数被视为普通变量,就像字符串或int一样。显然它们有一些额外的功能,但你可以以相同的方式使用它们,例如,你可以在一个数组中存储许多函数,或者将一个函数传递给另一个函数。鉴于此,我看不出有任何需要以你想要的方式命名函数。
我希望我能为你的具体问题提供更多帮助,但这有点难以理解,抱歉。
您可以尝试更改unCheckRadio
功能,以便将函数作为参数:
function unCheckRadio(num, func) { ... }
然后你会这样称呼它:
function unCheckRadio(5, function() {
// do whatever here.
});