Javascript 创建动态函数并调用它们
我正在为每个项目动态创建javascript函数,我想稍后调用它们,详细信息见代码注释Javascript 创建动态函数并调用它们,javascript,Javascript,我正在为每个项目动态创建javascript函数,我想稍后调用它们,详细信息见代码注释 var i=0; $(this).find("Tasks").each(function (i, e) { i++; function dynamicFunction+ i(){ } )}; // this will result as dynamicFunction1, dynamicFunction2, dynamicFunction3 ... so on //now
var i=0;
$(this).find("Tasks").each(function (i, e) {
i++;
function dynamicFunction+ i(){ }
)};
// this will result as dynamicFunction1, dynamicFunction2, dynamicFunction3 ... so on
//now i want to call them under antoher function
//so my doing this
for(var k=0;k<=i;k++)
{
dynamicFunction + k(); // this is not working
}
如果必须使用单个函数,为什么不将它们保存在一个数组中,然后在该数组中进行迭代:
var funcArr = [];
$(this).find("Tasks").each(function (i, e) {
funcArr.push(function(){
//some code
});
)};
for(var k = 0; k < funcArr.length; k++)
{
funcArr[k]();
}
请记住,函数foo{}大致相当于window[foo]=函数{}。因此,要创建那些动态命名的函数,您可以执行以下操作
var i = 0;
$(this).find("Tasks").each(function(i2, e) {
i++;
window["dynamicFunction" + i] = function() { }
)};
for(var k=0;k<=i;k++) {
window["dynamicFunction" + k]();
}
虽然您可能不应该使用全局窗口,而应该使用专用变量。为什么不使用具有不同参数的同一函数?@darkajax同一函数在我的情况下不起作用,好吧,这也不起作用,因此您最好显示实际情况。我很确定你可以用参数来工作。试试函数对象数组。或者函数对象