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

标签 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');
                            }
                        });
            }
        }

大多数情况下,此函数返回包含 3 个元素的数组。但是当我点击第一个事件时,onStart 它应该提醒我(0 开始),但它提醒(4 开始),这意味着它提醒 i 的最后一个元素。我应该如何解决这个问题?我尝试了很多东西,但我没有找到解决方案,也许你可以帮助我?

最佳答案

这是另一个闭包问题。试试这个:

for( i=0; i<activities.length; i++) {
    (function(i) {
        // your code here
    })(i);
}

关于Javascript onclick 使用 for 循环显示数组的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718284/

相关文章:

javascript for 循环不会迭代所有元素

javascript - 变量未正确显示(和添加)

javascript - 闭包中的变量作用域

javascript - 一页导航 JS > 突出显示的链接 + 滚动位置

javascript - MVC Razor 表中的复选框检查选择为 false

javascript - 在 React 中刷新页面后如何使用 localStorage 来维护状态

java - 如何使用 eclipse Juno 将 war 文件部署到 tomcat 6

javascript - 使用 Async/Await 的事件循环流

javascript - 如何查找 context.fillText(text, x, y) 的尺寸

javascript - lodash 或 vanilla JS 是否有将数组对象展平为数组的好方法?