Javascript onclick显示带有for循环的数组的最后一个元素

use*_*607 3 javascript

我没什么问题.我正在使用一个公司的API.我请求活动,他们返回我的一系列活动.这是代码的一部分.

client.requestActivities(function(activities) {
        if (activities.length > 0) {
            for(i=0; i < activities.length; i++) {
                var activity = activities[i];
                activity.onStart(function() { alert(i+ " started"); });
                activity.onCredit(function() { alert(i+ " credit"); });
                activity.onClose(function() { alert(i+ " close"); });
                activity.onFinish(function() { alert(i+ " finish"); });
                            $('.Game-Screen-Footer').append('<div class="Game-Screen-Footer-Adv" id="foota'+i+'"><a href="javascript:;" ><img src="'+activity.image_url+'" alt="'+activity.display_text+'" width="190" height="110"></a></div>');
                document.getElementById('foota'+i+'').onclick = function() {
                ARNO.box.show({html:'<div id="socialVibeFancyBox0"></div>', close: false, width:activity.window_width, height:activity.window_height, openjs: 
                            function(){
                                client.loadActivityIntoContainer(activity, 'socialVibeFancyBox0');
                            }
                        });
            }
        }
Run Code Online (Sandbox Code Playgroud)

}

大多数情况下,此函数返回包含3个元素的数组.但是当我点击第一个活动时,onStart它应该提醒我(0开始),但是它会发出警报(4开始),这意味着它会警告我的最后一个元素.我该怎么解决这个问题?我尝试了很多东西,但我找不到解决方案,也许你可以帮助我?

Nie*_*sol 5

这是封闭问题的另一个例子.试试这个:

for( i=0; i<activities.length; i++) {
    (function(i) {
        // your code here
    })(i);
}
Run Code Online (Sandbox Code Playgroud)