2013-01-13 33 views
0

我想在JavaScript中安裝一個事件處理程序來做一些加載文件(我使用Chrome進行測試)的工作。這是JavaScript我使用:文件閱讀事件處理程序奇怪與JavaScript/html5

// file reader... 

function handleFileSelect(evt) 
{ 
    alert('event changed called!'); 
    var files = evt.target.files; // FileList object 

    // files is a FileList of File objects. List some properties. 
    var output = []; 
    f = files[0]; 
    reader.readAsText(f); 

    var reader = new FileReader(); 
    reader.onloadend = function(evt) 
    { 
     // alert(evt.target.result); 
     alert('moo!'); 
    } 
} 

alert('adding event listener'); 
document.getElementById('files').addEventListener('change', handleFileSelect, false); 

奇怪的是,警報未觸發,所以我假設我已經正確安裝它們。我不確定是什麼錯誤。有任何想法嗎?

編輯:對不起,我應該提到它是handleFileSelect(...)事件處理程序不會觸發。

謝謝你的時間......

+2

**總是**當瀏覽器開發人員工具無法按預期工作時檢查錯誤。 – Pointy

+0

您在定義'reader'變量之前調用'reader.readAsText()'。 –

+0

謝謝Pointy,我沒有意識到Chrome有一個開發工具選項(我在Visual Studio-ville中生活了太久)。問題在於在加載頁面之前正在安裝回調。在頁面正文中設置'onload'回調可以解決我的問題。謝謝! – easythrees

回答

2

你叫reader.readAsText(f);分配reader到值之前,所以你得到一個錯誤試圖調用readAsText從一個未定義的值。

var reader = new FileReader(); 
reader.readAsText(f); 
+0

感謝您的收穫。然而,handleFileSelect(...)仍然沒有被調用(該函數頂部的警報永遠不會被觸發)。 – easythrees

+0

@ user1115716對我很好用http://jsfiddle.net/mowglisanu/T9G5C/ – Musa