是否可以在Javascript中使用for循环创建多个函数?

时间:2012-04-15 10:47:32

标签: javascript function for-loop

我正在尝试创建与按钮'ID

同名的函数
var a = ["ab1","aj6","yt5","gf5","js9"]
for (i = 0; i < a.length; i++) {
    var el = a[i];
    function el(){
        list.find(el);
    }
    $(function() {
        $("#"+el).click(el);
    }
}

当我这样做时,我得到了一个

  

未捕获的TypeError:无法读取未定义的属性“handler”   匿名函数

。但是当我将函数名称更改为“计算”而不是变量el时,它可以正常工作。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

如果您尝试将单击处理程序绑定到数组中具有“id”的每个元素,则:

var a = ["ab1","aj6","yt5","gf5","js9"]

$.each(a,function(i,val){               //for each item
    $("#"+val).on('click',function(){   //bind a click handler
        list.find(val);                 //that finds that element in "list"
    });

    //or

    $("#"+val).click(function(){ 
        list.find(val); 
    });

    //or

    $("#"+val).bind('click',function(){ 
        list.find(val); 
    });

    //or

    $('body').delegate('#'+val,'click',function(){ 
        list.find(val); 
    });
})

答案 1 :(得分:0)

您不能拥有两个名称相同的变量。 var elfunction el都称为el。 JavaScript将函数名称视为赋值函数的变量名(类型)。

此外,您应该使用函数语句而不是函数声明。有关详细信息,请参阅http://kangax.github.com/nfe/

答案 2 :(得分:0)

我不知道,你想要实现什么,但是“是的,可以使用数组值创建函数”:

var a = ["ab1","aj6","yt5","gf5","js9"];
for (var i = 0; i < a.length; i++) {        
    window[a[i]] = function(){
    };
}

在此之后,您有5个具有"ab1","aj6","yt5","gf5","js9"名称的全局函数。

答案 3 :(得分:-1)

是这样的:

var a = ["ab1","aj6","yt5","gf5","js9"]
for (i = 0; i < a.length; i++) {
    var el = a[i];

    $("#"+el).click(functon(){
        list.find(el);
    });

}