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