2016-07-04 3 views
0

Я пытаюсь прочитать все строки из динамической таблицы. Основная идея - прочитать все строки и сохранить их в массиве для дальнейшей обработки. Но до сих пор мне не удалось получить данные о строках. Приведенный ниже код возвращает только заголовки таблиц.Получить все строки из динамической таблицы jQuery

Вот код:

var data = []; 

var i = 0; 

$('#tempTable td').each(function (index, tr) { 
    var tds = $(tr).find('td'); 

    if (tds.length > 1) { 
     data[i++] = { 
      action: tds[0].textContent, 
      spec: tds[1].textContent, 
      data: tds[2].textContent, 
      unit: tds[3].textContent, 
      upper_tol: tds[4].textContent, 
      lower_tol: tds[5].textContent, 
      tol_unit: tds[6].textContent, 
      def: tds[7].textContent 
     } 
    } 
}); 

И HTML разметка выглядит следующим образом:

<table id='tempTable'> 
    <thead> 
     <tr> 
      <td class='table_head' width='80px'>Header1</td> 
      <td class='table_head' width='435px'>Header2</td> 
      <td class='table_head' width='100px'>Header3</td> 
      <td class='table_head' width='100px'>Header4</td> 
      <td class='table_head' width='100px'>Header5</td> 
      <td class='table_head' width='100px'>Header6</td> 
      <td class='table_head' width='100px'>Header7</td> 
      <td class='table_head' width='80px'>Header8</td> 
     </tr> 
    </thead> 
    <tbody> 
     <!-- Rows inserted dynamically here using jQuery --> 
    </tbody> 
</table> 
+1

Что такое событие, которое срабатывает, чтобы получить строки? И получить tbody trs вместо tds стола – mplungjan

+3

, ваш селектор имеет td, когда вы пытаетесь найти строки $ ('# tempTable td'), чтобы изменить $ ('# tempTable tr'), также когда вы вызываете этот фрагмент код? – WalksAway

+0

Это потому, что ваш код запускается до того, как произойдет какое-либо обновление в разделе tbody вашей страницы, возможно! –

ответ

0

Вы настроите свои заголовки таблицы, как «тд» вместо того, чтобы вы должны инициализировать их в «й ', как указано ниже.

<table id='tempTable'> 
    <thead> 
     <tr> 
      <th class='table_head' width='80px'>Header1</th> 
      <th class='table_head' width='435px'>Header2</th> 
      <th class='table_head' width='100px'>Header3</th> 
      <th class='table_head' width='100px'>Header4</th> 
      <th class='table_head' width='100px'>Header5</th> 
      <th class='table_head' width='100px'>Header6</th> 
      <th class='table_head' width='100px'>Header7</th> 
      <th class='table_head' width='80px'>Header8</th> 
     </tr> 
    </thead> 
    <tbody> 
     <!-- Rows inserted dynamically here using jQuery --> 
    </tbody> 
</table> 

Также см., на каком событии вы выбираете данные таблицы (Перед тем, как таблица выбора sho uld заполняются данными).

Для выбора данных из таблицы:

//traverse each row 
$('#tempTable tr').each(function (index, tr) { 
    var cols = []; 

    //get td of each row and insert it into cols array 
    $(this).find('td').each(function (colIndex, c) { 
     cols.push(c.textContent); 
    }); 

    //insert this cols(full rows data) array into tableData array 
    tableData.push(cols); 
    }); 

    console.log("tableData: ", tableData); 

Пожалуйста найти скрипку https://jsfiddle.net/Prakash_Thete/frm2ebug/1/ для того же ..

+0

1. Вы можете поместить TD в THEAD. 2. Вы не упомянули, что обновили скрипт до '$ (tr) .find (" th ")', поэтому, даже если бы это сработало, это означало бы, что это не сработает 3. Проблема заключается в простой опечатке '$ ("td"). find ("td") ' –

+0

Да, мы можем поместить td в заголовки. Но он выбирает 'td' для извлечения данных, поэтому заголовки будут попадать под данные, если мы будем держать их под td .. –

+0

Этот комментарий не имеет смысла (извините). –

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