2016-07-27 2 views
-2

Мой оригинальный вопрос не имеет смысла на основе обратной связи. Пытается выяснить, есть ли альтернативный способ чтения CSV с помощью анализа папы.Как разобрать CSV с чистым Javascript

Мой текущий код:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
<script src="./papaparse.min.js"></script> 

<script> 
    var data; 

// Target first (and only) file selected 
    function handleFileSelect(evt) { 
    var file = evt.target.files[0]; 

// Parse the file 
    Papa.parse(file, { 
     header: true, 
     download: true, 
     dynamicTyping: true, 
     complete: function(results) { 
     data = results; 
     console.log(data); 
     } 
    }); 
    } 

// Run handleFileSelect function when document is ready 
    $(document).ready(function(){ 
    $("#testCsv").change(handleFileSelect); 
    }); 
</script> 

<!--File button to upload file--> 
<input type="file" id="testCsv" name="files"/> 

EDIT: Видимо, мне нужно сделать некоторые дополнительные исследования на основе вниз голосов. Извините, новичок в этом. Моя следующая попытка:

var data; 

function parseCSV(file) { 
    Papa.parse(file, { 
     header: true, 
     download: true, 
     dynamicTyping: true, 
     complete: function(results) { 
      data = results; 
      console.log(results); // results appear in dev console 
     } 
    }); 
} 
parseCSV(document.getElementById("testCSV").files[0]); 

Который возвращает ошибку:

ReferenceError: document is not defined 

Делать больше исследований.

+2

Единственная часть, где я вижу вас с помощью jQuery в этом коде, - это то, где вы прикрепляете обработчик изменений к элементу. Итак, исследуйте, как добавлять обработчики событий в «чистый» JS. – CBroe

+0

* «... с чистым Javascript» * Нет ничего о использовании jQuery или нет, что никак не связано с «чистотой» JavaScript. Если вы хотите сделать это без какой-либо библиотеки, то, что вы спрашиваете, как это сделать с DOM API. Оба варианта jQuery и DOM API являются «чистыми» JavaScript. –

+0

Ну, ясно, я ничего не понимаю о JQuery и вам нужно сделать еще несколько исследований. Все еще очень новый для веб-разработчиков, спасибо за ответы. – FF5Ninja

ответ

2

Практически не используется jQuery. Все, что вы используете jQuery для - это дождаться загрузки DOM перед запуском вашего кода и подключить обработчик событий.

Вы можете сделать первый (ожидание), просто переместив свой тег сценария в конец HTML, прямо перед закрывающим тегом </body>.

Вы можете сделать второй на любой неопределенно современный браузер с помощью addEventListener:

document.getElementById("testCsv").addEventListener("change", handleFileSelect, false); 

Если вам необходимо поддерживать устаревшие браузеры как IE8, которые не имеют addEventListener, или более современные браузеры, ковылять себя и иногда действуют как устаревшие браузеры (IE9-IE11), this answer имеет функцию, которую вы можете использовать либо для использования addEventListener, либо для старого MS-attachEvent.

-2

Напишите свою собственную функцию Parse. Функция должна принимать входную строку (содержимое CSV) и разбивать ее на символ «,»/строку.

Прочитать первую строку (до конца строки & возвращение на карету). Это ваши столбцы. Все остальные строки - ваши данные.

Имеют смысл?

+0

Это очень * смутно написанное, но вопрос, похоже, не просит теперь не использовать функцию «Papa.parse». * (не мой dv) * –

+0

Кроме того, что файлы CVS не обязательно используют символ ',' в качестве разделителя (espacially в windows) из OP, неясно, нужно ли писать собственную функцию с «чистым» javascript или просто избавиться от маленькой части jQuery. – empiric

+0

Я понимаю, что CSV разделен запятой. Как это отличается от окон? – AlvinfromDiaspar

Смежные вопросы