I was trying to use FileReader to read from a text file and below is my code which throws an error.
var message = document.getElementById("message");
function upFiles(files){
for(var x=0; x< files.length; x++){
var fReader = new FileReader();
fReader.onload = function(e){
message.innerHTML += '<br>'+ files[x].name;
message.innerHTML += '<br>'+e.target.result;
}
fReader.readAsText(files[x]);
}
}
<input type="file" multiple onchange="upFiles(this.files)">
<div id-"message"></div>
But when I used a separate variable to store file's name, it worked.
var message = document.getElementById("message");
function upFiles(files){
for(var x=0; x< files.length; x++){
var fReader = new FileReader();
var fileName = files[x].name;
fReader.onload = function(e){
message.innerHTML += '<br>'+ fileName;
message.innerHTML += '<br>'+e.target.result;
}
fReader.readAsText(files[x]);
}
}
<input type="file" multiple onchange="upFiles(this.files)">
<div id="message"></div>
I want to know why it worked the second time. why the anonymous function couldn't access the local variable in the first attempt