2013-08-04 5 views
0

글쎄, 나는 같은 문제에 대해 2 일 전에 다시 여기에 있었지만 아직 작동하지 않는 것으로 보인다. 따라서 작업은 필드가 CSV 데이터라는 배열을 전달하는 것입니다. 나는 이것을 다음과 같이 조언했다 :데이터리스트에 배열

<datalist id="stelios"> 

</datalist> 
<script type="text/javascript" src="jquery.js"></script> 
<script> 
function handleFileSelect(evt) { 
var files = evt.target.files; // FileList object` 

// Loop through the FileList 
     for (var i in files) { 

      var reader = new FileReader(); 

      $('#stelios').append('<option value=' + files[i] + '>'); 
     } 
    } 

document.getElementById('stelios').addEventListener('change', handleFileSelect, false); 
</script> 

나는 아직 데이터를 얻지 못하는 것 같다. 어떤 ides?

+1

이 코드가 어떤 역할을하는지 알고 있습니까? – Sumurai8

+0

잘 모르겠습니다. 나는 jquery를 처음 사용합니다. 그러나 데이터리스트를 초기화 한 다음 "files []"의 배열을 통과하고 csv 파일에서 데이터를 읽으면 배열 목록으로 전달합니다. –

답변

1

for(var i in files)을 사용하고 있습니다. 이것은 files의 모든 값과 Object 프로토 타입에 추가 된 모든 값을 반복합니다. (This is bad)이 출력을 필터링해야합니다.

다음 줄은 var reader = new FileReader();입니다. for 루프에서 이것에 대한 참조가없는 것 같으므로 삭제하십시오.

다음 줄은 $('#stelios').append('<option value=' + files[i] + '>');입니다. 그것은 특정 'option'요소를 만들고 stelios라는 id를 가진 요소에 추가합니다. 이것은 옳은 것 같습니다. 그러나이 옵션 요소의 값은 따옴표없이 files[i]으로 설정됩니다 ... 어느 쪽이 엉망이 될 가능성이 가장 큽니다.

for(var i in files) { 
    if(files.hasOwnProperty(i)) { 
    //Removed unneeded FileReader 
    $('#stelios').append('<option value="' + files[i] + '">'); 
    } 
} 

것은 당신이 files 당신이 그것을 포함 할 것으로 예상 데이터가 포함되어 있는지 확인하는 것이 가정입니다 : 당신은 그것을 변경해야합니다. 나는 당신이 onchange 처리기로 달성하고자하는 바를 전혀 모른다.

+0

답변과 제공된 유용한 의견을 보내 주셔서 감사합니다. 작업은 csv 파일에서 데이터를 읽고 배열에 저장하는 것입니다. 그런 다음이 배열을 데이터리스트로 전달해야합니다. 자바 스크립트 파일 API - http://www.html5rocks.com/en/tutorials/file/dndfiles/ (섹션 : 파일 읽기)의 코드를 사용하고 있습니다. 일반적으로 csv 파일을 선택하면 데이터 파일의 데이터가 페이지에 표시됩니다. 이제 데이터 정렬에 배열을 전달하는 for-loop를 추가해야합니다. 다시 한 번 감사드립니다. –

관련 문제