2016-02-16 25 views
0

我试图一次解析2个或多个xml文件。意思是我可以选择例如5个.xml文件,然后它应该通过jQuery插件进行解析,然后写在页面上。 现在我的问题:循环的第二,第三等迭代太早触发,所以第一个文件变得“丢失”。当多个文件处于活动状态时,Filereader会被覆盖

我尝试:

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); 
     } 
    } 
}); 

回答

0

上找到一个这样的其它问题的答案:

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

就像一个魅力。 =)

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); 
     } 
     } 
    }); 
+0

Thx帮助但“temp [”reader“+ i] .result”返回undefined,任何想法为什么? – sandrooco

相关问题