2017-06-30 76 views
0

我正在使用FileReader API加載文本文件。在此過程中,我將內容放入<pre>標籤fileDisplayArea.innerText = reader.result;。稍後,我想在播放視頻期間觸發的duringPlayback功能中使用此內容。 video.ontimeupdate = function() { duringPlayback() };設置和使用變量(JavaScript)

我不想一次又一次地將載入的文件的內容放在video.ontimeupdate函數中,所以我想我只是加載reader.result(或fileDisplayArea.innerText )內容轉換爲全局變量,我可以稍後在video.ontimeupdate函數中對內容執行所需操作。但我似乎無法設置變量,以便它可以在video.ontimeupdate函數中使用。我在嚴格模式下運行,但我已經評論說,它仍然不起作用。

如何將reader.result內容設置爲可在video.ontimeupdate函數內使用的變量?我很難過。 (我想在嚴格模式下,如果可能的話跑。)提前

感謝, 安德魯

// Assign an ontimeupdate event to the video element, and execute a function if the current playback position has changed 
video.ontimeupdate = function() { duringPlayback() }; 

function duringPlayback() { 
    document.getElementById("speed").innerHTML = (Math.round(video.playbackRate * 100)/100).toFixed(2); 

    // I need to use the var hostFile (reader.result) contents here. ########### 

} 


// Load Tab Delimted File 
var fileInput = document.getElementById('fileInput'); 
fileInput.addEventListener('change', function (e) { 
    var file = fileInput.files[0]; 
    var textType = /text.*/; 
    if (file.type.match(textType)) { 
     var reader = new FileReader(); 
     reader.onload = function (e) { 
      // Entire file 
      fileDisplayArea.innerText = reader.result; 
      var hostFile = reader.result; //########### 
     } 
     reader.readAsText(file); 
     //doIt(); //Normally doIt would be called from another function 
    } else { 
     fileDisplayArea.innerText = "File not supported!" 
    } 
}); 

回答

0

我想我只需裝入reader.result(或fileDisplayArea。 innerText)的內容轉換成全局變量

所以就這麼做。聲明你的變量之外的一切:

var hostFile; 
video.ontimeupdate = function() { duringPlayback() }; 

function duringPlayback() { 
    document.getElementById("speed").innerHTML = (Math.round(video.playbackRate * 100)/100).toFixed(2); 

    // I need to use the var hostFile (reader.result) contents here. 
    console.log(hostFile); 

} 

var fileInput = document.getElementById('fileInput'); 
fileInput.addEventListener('change', function (e) { 
    var file = fileInput.files[0]; 
    var textType = /text.*/; 
    if (file.type.match(textType)) { 
    var reader = new FileReader(); 
    reader.onload = function (e) { 
     // Entire file 
     fileDisplayArea.innerText = reader.result; 
     hostFile = reader.result; //########### 
    } 
    reader.readAsText(file); 
    //doIt(); //Normally doIt would be called from another function 
    } else { 
    fileDisplayArea.innerText = "File not supported!" 
    } 
}); 
+0

是的,我試過了。 (對不起,我沒有在我的文章中捕獲該行。)我以前有var hostFile =「」; (我想我必須給它一個初始值),但已經改變它只是var hostFile;現在,控制檯並沒有返回「未定義」。我仍然難倒。看來這應該是如此簡單! – Andrew

+0

聽起來像'duringPlayback'在'hostFile'被設置爲讀者結果之前被調用。你可能想要設置一個plunker/jsfiddle/codepen來更好地說明你的問題 –

+0

Doh!我剛剛聞到了我自己的大腦屁。我正在逐行比較你的代碼和我的代碼。在reader.onload函數中,我有「var hostFile = reader.result」,而不是「hostFile = reader.result」。當然,我刪除了「var」,現在它按照預期工作。 - 我仍然不夠好,因此我很容易發現那樣的愚蠢錯誤。謝謝。沒有你花時間發佈正確的腳本,我不知道要花多長時間才能發現錯誤。我相信它會有一段時間。 - 再次感謝,安德魯 – Andrew