所以我有一个我正在处理的多文件上传器,我无法维护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);
...
}
答案 0 :(得分:0)
你需要在一个闭包中捕获我,查看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);
}
...
}