Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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,在将变量从一个函数传递到Jquery句柄函数时,我遇到了一个简单的问题。 在第一个函数中,我有一个遍历项目列表的for循环。该函数插入一张图片,我想在图片上附加一个onclick()Jquery句柄。onclick()调用传递for循环的indx的函数。不是传递值,而是传递引用,以便所有onclick句柄最终都具有相同的值(for循环的最后一个值)。 代码如下: function setAlbums() { for(var indx=0;indx<$("li.ma

在将变量从一个函数传递到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]**);}) ;

    }
函数setAlbums()
{

对于(var indx=0;indx这是因为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) ;
     }
}
函数setAlbums()
{

对于(var indx=0;indx@Barmar实际上没有必要这样做,因为在这种情况下可以计算索引。阅读本文可以了解@Jack闭包是如何工作的,但最好了解更一般的情况。