2017-07-29 137 views
-1

我試圖通過input file顯示多個圖像文件的預覽,併爲它們分配一個特定的id(我從for循環生成)。一切工作正常,但在分配它們的id有問題。如何在FileReader.onload中顯示'i'(for循環)的值

我的代碼是

function fileSelected() { 
var files = event.target.files; 
    for(var i=0; i<files.length; i++) { 


    var reader = new FileReader(); 
reader.onload = function(event) { 
    var picWrap = '<img id="'+i+'" src="'+event.target.result'" />'; 
} 
reader.readAsDataURL(files[i]); 
} } 

我使用的onclick使用此功能

現在根據上面的代碼我收到的所有文件的預覽,但有問題與他們的ID。

一樣,如果我選擇2個文件,那麼結果是

(filePreview) Id = 2 
(filePreview2) Id = 2 

,如果我選擇3個文件,然後我得到的所有3個文件的預覽,但他們的ID變成3每個事先知情同意,如果我選擇單個文件然後我的值變爲1而不是0.

+0

你應該在文件輸入字段的onChange使用。 – asmmahmud

回答

0

問題是,當onload事件發生時,循環已經完成,循環索引是最後一個值。 一個辦法是做到以下幾點,這臺我在回調調用bind時提供的值:

reader.onload = (function(i, event) { 
    var picWrap = '<img id="'+i+'" src="'+event.target.result'" />'; 
}).bind(reader, i);