2017-01-05 9 views
1

Попытка сделать таблицу из файла csv, с которой я позже буду работать с jquery. Papaparse, кажется, проще всего использовать для извлечения данных из csv. Он отлично сгенерировал таблицу. Но по какой-то причине я даже не могу добавить класс в tr. Вот мой код.Невозможно добавить класс в таблицу tr, сгенерированную из файла CSV в Papaparse

function arrayToTable(tableData) { 
    var table = $('<table></table>'); 
    $(tableData).each(function (i, rowData) { 
     var row = $('<tr></tr>'); 
     $(rowData).each(function (j, cellData) { 
      row.append($('<td>'+cellData+'</td>')); 
     }); 
     table.append(row); 
    }); 
    return table; 
} 

$.ajax({ 
    type: "GET", 
    url: "data/late.csv", 
    success: function (data) { 
     $('body .tableclass').append(arrayToTable(Papa.parse(data).data)); 
    } 
}); 

$(window).load(function(){ 
    $(".tableclass table tbody tr").each(function(){ 
     $(this).addClass("trclass"); 
     }); 
}); 

ответ

0

Вы применяете класс до того, как ваши данные закончили загрузку. Чтобы исправить, выполните следующие действия:

$.ajax({ 
    type: "GET", 
    url: "data/late.csv", 
    success: function (data) { 
     $('body .tableclass').append(arrayToTable(Papa.parse(data).data)); 
     $(".tableclass table tbody tr").each(function(){ 
      $(this).addClass("trclass"); 
     }); 
    } 
}); 
+0

Ну, это только пример. В конце концов, я хочу, чтобы иметь возможность извлекать данные из этой таблицы и динамически стилизовать ее. – Shalambalam

+0

Я понятия не имею, что вы имеете в виду, и как мой ответ не решает вашу проблему. –

+0

Nnr ум. Работайте отлично. Спасибо! – Shalambalam

0

Похоже, что ваша рабочая нагрузка стреляет до создания фактической таблицы. $ (". Tableclass table tbody tr") длина может быть равна нулю в это время.

Редактирование: поскольку вам нужно вызывать эту функцию несколько раз и с различным набором настроек, я бы сказал, что вы вызываете функцию ajax из другой функции и добавляете функцию обратного вызова в качестве параметра. Вызвать эту функцию обратного вызова после успеха ajax

function arrayToTable(CallbackFunction) 
{ 
$.ajax({ 
    type: "GET", 
    url: "data/late.csv", 
    success: function (data) { 
     $('body .tableclass').append(arrayToTable(Papa.parse(data).data)); 
     CallbackFunction(); 
    } 
}); 
} 
+0

Есть ли способ запустить этот код при загрузке таблицы? – Shalambalam

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