当多个文件处于活动状态时,文件读取器会被覆盖

时间:2016-02-16 15:08:05

标签: jquery loops parsing filereader html5-filesystem

我试图一次解析2个或更多xml文件。意味着我可以选择例如5个.xml文件,然后它应该通过jQuery插件解析并随后写在页面上。 现在我的问题:循环的第二次,第三次等迭代过早触发,因此第一个文件失去"丢失"。

我的尝试:

var input = $("#xmlInput");
input.change(function () {
   var inputfiles = input[0].files;
   for (var i = 0; i < inputfiles.length; i++) {
      var reader = new FileReader();
      reader.readAsText(inputfiles[i]);
      reader.onloadend = function () {
         var data = $.xml2json(reader.result);
         console.log(data);
         //write(data);
      }
    }
 });   

2 个答案:

答案 0 :(得分:0)

只是一个猜测,但它有助于将FileReader分配给不同的变量吗?

   var temp = {};

   var input = $("#xmlInput");
   input.change(function () {
      var inputfiles = input[0].files;
      for (var i = 0; i < inputfiles.length; i++) {
         temp["reader"+i] = new FileReader();
         temp["reader"+i].readAsText(inputfiles[i]);
         temp["reader"+i].onloadend = function () {
            var data = $.xml2json(temp["reader"+i].result);
            console.log(data);
            //write(data);
         }
       }
    });   

答案 1 :(得分:0)

找到另一个问题的答案:

(function (file) {
   var reader = new FileReader();
   reader.onload = function (readerData) {
      var data = $.xml2json(readerData.target.result);
      write(data);
   }
   reader.readAsText(file);
})(inputfiles[i]);

像魅力一样工作。 =)