我在查看新的HTML5文件API以顯示要上傳的圖像的預覽。我搜索了一些代碼,幾乎每個例子都有相同的結構,幾乎相同的代碼。我不介意複製,特別是當它有效時,但我需要了解它。所以我試圖理解代碼,但我堅持一個區域,需要有人解釋一小部分:需要在HTML5文件API的圖像預覽中使用澄清
該代碼是指一個HTML表單輸入字段,當選擇該文件時,在img標籤中顯示預覽圖像。沒有什麼花哨。簡單。這是消除所有的噪聲後:
$('input[type=file]').change(function(e) {
var elem = $(this);
var file = e.target.files[0];
var reader = new FileReader();
//Part I could not understand starts here
reader.onload = (function(theFile) {
return function(e) {
var image_file = e.target.result
$('#img_id').attr('src',image_file);
};
})(file);
reader.readAsDataURL(file);
//Upto here
});
我認爲reader.onload需要分配一個普通的事件處理程序,所以我換成上面標有整款:
reader.readAsDataURL(file);
reader.onload = function(e) {
var image_file = e.target.result;
//#img_id is the id of an img tag
$('#img_id').attr('src',image_file)
};
它按我預期的那樣工作。
問題:上述簡化代碼丟失的原始代碼是什麼?我明白這是一個函數表達式,返回一個函數,然後調用它...但是爲了什麼?在教程中複製了太多的原始代碼,並且沒有包含它,但沒有很好的解釋。請解釋。謝謝
完美。實際上,網上的大部分代碼都涉及多個上傳和預覽。這是我見過的最清晰和最有說服力的解釋。你應該寫一本書...很好地解釋了幾個主題。希望我會多次接受你的回答。謝謝! – Sam