【问题标题】:Maintaining passed i value in a for loop在 for 循环中维护传递的 i 值
【发布时间】:2014-03-04 23:26:25
【问题描述】:

所以我正在开发一个多文件上传器,但在维护i 形成for 循环时遇到了麻烦。 基本上问题是我在 progressHandler 函数中传递了i 值,但每次progressHandler 触发它都会触发最后一个i 值,即files.files.length

首先保持i 值传递的最佳方法是什么?

for (var i = 0; i < files.files.length; i++) {
    ...
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", function(event){progressHandler(event,i)}, false);
    ajax.addEventListener("load", function(event){completeHandler(event,i)}, false);
    ...
}

【问题讨论】:

标签: jquery for-loop xmlhttprequest


【解决方案1】:

您需要在闭包中捕获 i,查看 here 以获得使用它们的良好指南。像这样的:

for (var i = 0; i < files.files.length; i++) {
    ...
    (function (i) {
        var ajax = new XMLHttpRequest();
        ajax.upload.addEventListener("progress", function(event){progressHandler(event,i)}, false);
        ajax.addEventListener("load", function(event){completeHandler(event,i)}, false);
    }
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2011-05-14
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多