2016-03-01 50 views
0

好吧,所以我編寫了這個程序,以避免手動重新格式化幾個> 6000條目csv文件。它在完整文件的第一次運行時凍結,然後運行正常,當我給它一個1000條目塊時,我在我的下載文件夾中有1000個文件。現在一次下載量不會超過51個。其餘的都轉換爲我的XML格式,但不會自動下載。試圖創建和下載數以千計的文件現在不工作

<script src="./papaparse.min.js"></script> 
<script src="./jquery-2.2.1.min.js"></script> 
<script> 
    var data; 
    var j = 1001; 
    function handleFileSelect(evt) { 
    var file = evt.target.files[0]; 

    Papa.parse(file, { 
     header: true, 
     dynamicTyping: false, 
//  preview: 5, 
     step: function(results, parser) { 
     j++ 
//  console.log("Row data:", results.data); 
//  console.log("Row errors:", results.errors); 
//  $("#test").text(results.data["0"]["correct_answer"]); 

var dataArray = [j, 
        results.data["0"]["question_id"], 
        results.data["0"]["node_id"], 
        results.data["0"]["part_text"], 
        results.data["0"]["distractor_1"], 
        results.data["0"]["distractor_2"], 
        results.data["0"]["distractor_3"], 
        results.data["0"]["correct_answer"], 
        results.data["0"]["explanation"]]; 

dataArray = HTMLGunkCleanse(dataArray); 

XMLWriter(dataArray[0], 
      dataArray[1], 
      dataArray[2], 
      dataArray[3], 
      dataArray[4], 
      dataArray[5], 
      dataArray[6], 
      dataArray[7], 
      dataArray[8]); 


     }//end of the line for stuff to do with each iteration of data 

     }) 
    }; 

function HTMLGunkCleanse(dataArray){ 
var regex = /<[^>]*>/g; 
for (i = 3;i<8;i++){ 
dataArray[i] = dataArray[i].replace("<p>", "\r\n").replace("</p>", "").trim(); 
var check = dataArray[i]; 
dataArray[i] = dataArray[i].replace(regex, "").replace("\\s+", "").trim(); 
if (check != dataArray[i]){ 
console.log(check); 
console.log(dataArray[i]); // shows any differences that may have occured 
    } 
} 

return dataArray 
} 

function XMLWriter(fileName, qID, nodeID, question, d1, d2, d3, correct, feedback){ 


setTimeout(function(){console.log("waiting");},1) 

//create long ugly string that looks good in xml 



var blob = new Blob([doc.toString()], { 
type: "text/plain;charset=utf-8" 
}); 

var url = URL.createObjectURL(blob); 

var a = document.createElement('a'); 
a.download = "cfal_question_00006_" + fileName + ".dita"; 
a.href = url; 
a.textContent = "Download latest"; 
a.click(); 
//if the click() function dosen't work you can try using onclick() fucntion like this 
//a.onclick(); 


document.getElementById('test').appendChild(a); 
} 


    $(document).ready(function(){ 
     $("#csv-file").change(handleFileSelect); 


    }); 
</script> 
<input type="file" id="csv-file" name="files"/> 
<div id="test"> 

</div> 

在對問題的回答中,我認識到了它的醜陋。我已經採取了一個JavaScript類,不要在網上一些東西,所以我有點新鮮。任何建議,爲什麼它工作正常,現在不工作?我使用谷歌瀏覽器來運行它。

+0

我仍然不知道爲什麼它有一次工作,但我切換到使用[JSZip](https://stuk.github.io/jszip/)和它的偉大工作。 – JOxborrow

回答

0

在函數'HTMLGunkCleanse'中,返回的dataArray不以';'結尾,也許這就是問題所在?