将变量传递给javascript中的函数

时间:2013-05-07 18:11:40

标签: javascript

我在将变量从一个函数传递给Jquery句柄函数时遇到了一个简单的问题。 在第一个函数中,我有一个for循环遍历项目列表。该函数插入一张图片,我想在图像上附加一个onclick()Jquery句柄。 onclick()调用一个传递for循环的indx的函数。传递的值不是传递引用,所以所有的onclick句柄都以相同的值(for循环的最后一个值)结束。 代码如下:

function setAlbums()

    {
        for(var indx=0;indx<$("li.mainSpPic").length;indx++)
            {
             ....
             $("li.mainSpPic").eq(indx).children("img").eq(0).click(**function(){chngAlbm(indx,albmStrB[1]**);}) ;

    }

那么有人可以建议如何传递每个onclick()函数都具有唯一值的indx变量吗?

1 个答案:

答案 0 :(得分:0)

这是因为Javascript中的闭包。它失败是因为处理函数绑定到变量indx,而不是函数生成时变量indx的值。 处理函数在for语句结束时运行。

解决这个问题的方法就是这个。

function setAlbums()
{
    for(var indx=0;indx<$("li.mainSpPic").length;indx++)
    {
         ....
         $("li.mainSpPic").eq(indx).children("img").eq(0).click(function(value) {
                return function() {
                  chngAlbm(value,albmStrB[1]);
                } 
         })(indx) ;
     }
}