如何识别哪个文件正在使用事件?

时间:2012-12-04 06:58:26

标签: javascript

我有一个功能,显示将文件上传到服务器的进度:

function progress(event) {
...
}
...
for (var i = 0; i<files.length; i++) {
    xhr.upload.onprogress = progress;
}

进度函数在中用于循环,并为每个文件执行一次。 正在进行的功能我想写多少百分比上传,我可以为一个文件做,但如果我上传的不是一个文件,那么我不知道如何为每个文件取得进展。 我可以为进度函数添加循环参数吗?

1 个答案:

答案 0 :(得分:1)

您可以使用匿名函数为进度函数提供附加参数:

function progress(event, file) {
   ...
}

for (var i = 0; i<files.length; i++) {
    xhr.upload.onprogress = function(event) {
        progress(event, files[i]);
    }
}

但是这段代码不起作用,因为 progress 每次都会占用最后一个文件项。为了避免它,你必须使用一个闭包:

function progress(event, file) {
    ...
}

for (var i = 0; i<files.length; i++) {
    (function(xhr, file) {
        xhr.upload.onprogress = function(event) {
            progress(event, file);
        }
    })(xhr, files[i]);
}

P上。 S.对不起,我的第一个回答是错的,我已经将其删除了。