ファイルをアップロードしていて、ロードごとにプログレスバーを表示していますが、1つのプログレスバーにのみ適用されます。 HTMLで進行状況バーがファイルアップロードの幅を更新しない
、JavaScriptでは
<input type="file" id="file-input" multiple>
<div id="file-list">
</div>
、
$('#file-input').change(function(e) {
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.readAsBinaryString(f);
reader.onloadstart = function (e) {
var text = '<div><div id="progress_bar" class="loading"><div class="percent">0%</div></div></div>';
$('#file-list').append(text);
}
reader.onload = function(e) {
var progress = document.querySelector('.percent');
progress.style.width = '100%'; // replacing with percentage
progress.textContent = '100%';
}
}
})。
3つのファイルを同時にアップロードすると、100%の進行状況バーと0%の2つのバーが表示されます。これには何が問題なのですか?
は、各 'File'オブジェクトの進行状況を表示するための要件ですか? http://stackoverflow.com/questions/19871627/javascript-for-loop-scope-takes-last-variableも参照してください。 'FileReader'は非同期です。 2回目のファイルアップロードは、最初のファイルアップロードが完了するまで待つことはありません。 – guest271314
はい、アップロードする各ファイルの進捗状況を表示したいと思います。ありがとう。 – user2307087