Javascript 对于循环赢得';t将i变量传递给循环内的Jquery函数

Javascript 对于循环赢得';t将i变量传递给循环内的Jquery函数,javascript,jquery,for-loop,Javascript,Jquery,For Loop,我有一个for循环,它不会将它的I变量或任何类型的变量传递到Jquery函数中,该函数被编码为与每个循环一起运行 for (var i = 0; i < result.length; i++) { $('#frame-' + i + '').fadeOut(function () { ALERT(i); document.getElementById('frame-' + i + '').getElementsByTagName('img')[0].

我有一个for循环,它不会将它的I变量或任何类型的变量传递到Jquery函数中,该函数被编码为与每个循环一起运行

for (var i = 0; i < result.length; i++) {
    $('#frame-' + i + '').fadeOut(function () {
        ALERT(i);
        document.getElementById('frame-' + i + '').getElementsByTagName('img')[0].src = 'img/' + result.cat[i].id + '.png';

    });
    $('#frame-' + i + '').fadeIn();

}
for(变量i=0;i
我发现我可以使用.on或.bind函数,但我不知道如何使用fadeOut()

fadeOut.on()不起作用

有什么建议可以让它工作吗?

再次结束

$.each(result, function (i, res) {
    $('#frame-' + i + '').fadeOut(function () {
        alert(i);
        $(this).find('img').get(0).attr('src', 'img/' + res.cat.id + '.png');
    }).fadeIn();
})
再次关闭

$.each(result, function (i, res) {
    $('#frame-' + i + '').fadeOut(function () {
        alert(i);
        $(this).find('img').get(0).attr('src', 'img/' + res.cat.id + '.png');
    }).fadeIn();
})

问题是,当淡出完成时,for循环已经完成,因此淡出代码读取的
i
值将始终相同(最后一个值)

创建一个闭包来传递
i
的值。这将为您提供一个不会被for循环覆盖的
i
的本地副本。同时将
ALERT()
更改为
ALERT()
(Javascript区分大小写)

for(变量i=0;i
问题在于,当淡出完成时,for循环已经完成,因此淡出代码读取的
i
值将始终相同(最后一个值)

创建一个闭包来传递
i
的值。这将为您提供一个不会被for循环覆盖的
i
的本地副本。同时将
ALERT()
更改为
ALERT()
(Javascript区分大小写)

for(变量i=0;i
frame-'+i+'
替换为
frame-'+i
@DipeshParmar这不是问题,因为
i
在回调中不在范围内。看起来关闭问题
alert()
alert()不同
.replace
frame-'+i+'
frame-'+i
@DipeshParmar的可能重复不是问题,因为
i
在回调中不在范围内。看起来像是关闭问题
alert()
alert()
不一样。的可能重复