파일을 업로드하고 해당 내용을 읽은 다음 내용을 테이블로 출력하려고합니다. 문자열에> char가있을 때마다 정보를 새 행에 배치해야합니다.JavaScript FileReader 및 동적 테이블
새로운 'tr'을 만들고 그 행의 셀 'td'에 데이터를 추가하는 방법에 대해 머리를 감싸는 데 문제가 있습니다.
나는 <tr>
과 <td>
에 붙어있어 파일의 내용을 동적으로 추가합니다. 나는 정규식을 사용하여 숯을 찾을 수 있다고 확신하지만 실제로 도움이 필요한 것은 아니다. 나는> char 뒤에 정보를 가져 와서 테이블의 새로운 행에 추가하는 방법으로 고민하고있다.
업데이트 : 좋아, 아직 내가하고 싶은 일에 완전히 기능하지 못했습니다. 나는 파일을 업로드하고, 그것을 읽고, 객체로서 정보를 저장하고있다. 그러나, 나는 하나의 인스턴스에 대해서만 이것을 할 수있다. 텍스트 파일을 업로드 할 때 파일에 여러 개의 DNA 시퀀스가 있습니다. 각 시퀀스는이 같은 sequence_id해야합니다 :
9013e1 ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCC CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC CTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCC을 CTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAG TTTAATTACAGACCTGAA
그래서, 내가 노력하고 t 오, 파일을 읽어들이는 모든 시퀀스 ID의 다음 시퀀스를 발견하고 내가 편집 가능한 선도을 원하는과 같이 트림 후행 :
는var objArray = [
{
'id': '>9013e1',
'sequence': 'ACAAGATGCCATTGTCCCCCGGCCT...',
'lead_trim': //get the value from a input from the user,
'trail_trim': //same as above
},
{
//another obj like above
}
]
순서는 또한 매 60 개 문자 뒤에 삽입 줄 바꿈을 가질 필요가있다. 일단 텍스트 파일의 데이터를 올바르게 처리하면 원래 게시물에 명시된 것처럼 테이블에 데이터를 출력해야합니다. 내가 겪고있는 문제는 objArray에있는 하나의 obj에 대한 정보 만 저장할 수있는 것에 매달려있다.
여기 https://jsfiddle.net/w6jbuqfy/
는 무슨 일이 일어나고 있는지에 대한 설명입니다 : 여기
는function scanForSequences(event) {
//Get the file from HTML input tag
var file = event.target.files[0];
var output = document.getElementById('table');
if(file) {
var sequenceArray = [];
var objArray = [];
var obj = {};
var str = '';
var subStr = '';
//Create a new file reader
var reader = new FileReader();
//When the file reader loads
reader.onload = function(evt) {
//Add the contents of file to variable contents
var contentsByLine = evt.target.result.split('\n');
//Alert user the file upload has succeeded
alert('File ' + file.name + ' has been uploaded!');
for(var i = 0; i < contentsByLine.length; i++){
if(contentsByLine[i].charAt(i) == '>'){
obj['id'] = contentsByLine[i];
}else{
sequenceArray.push(contentsByLine[i]);
str = sequenceArray.toString();
subStr += str.substring(0, 60) + '\n';
str = str.substring(60);
obj['sequence'] = subStr;
obj['lead_trim'] = 0;
obj['trail_trim'] = 0;
}
objArray.push(obj);
console.log(objArray);
}
}
reader.readAsText(file);
} else {
alert('Failed to upload file!');
}
console.log(obj);
}
document.getElementById('fileItem').addEventListener('change', scanForSequences, false);
그것을 사용할 수 있습니다'fr.onload = addFileDataToResults2' 대신 간격을 사용하고 계십니까? –
예! 나는 그것에 대해 몰랐고, 업데이트 된 바이올린 : https://jsfiddle.net/w6jbuqfy/1/ – derp