2012-03-09 7 views
2

У меня проблема, когда :eq() не принимает счетчик n, чтобы вставить значения в новый столбец в таблицу в HTML.Вставить новую строку в таблицу

$(document).ready(function() { 
    var $tablerow = $('table.table').find('tr'); 
    count = 0; 

    $tablerow.each(function(index, value){ 
     count += 1; 
     var $listitem = $(this); 
     n = parseInt($listitem.index()); 
     var $newRow = $("<td>" + n + "</td>"); 
     $("table.table tr:eq(n)").append($newRow); 
    }); 
}); 

HTML

<table class="table"> 
    <tr><td>First row</td></tr> 
    <tr><td>second row</td></tr> 
    <tr><td>third row</td></tr> 
    <tr><td>fourth row</td></tr> 
    <tr><td>fifth row</td></tr> 
    <tr><td>sixth row</td></tr> 
    <tr><td>seventh row</td></tr> 
    <tr><td>eighth row</td></tr> 
</table> 
+0

Вам не нужно найти. Вам просто нужен массив TR. '$ ('. table tr')' возьмет их. Но если у вас есть несколько таблиц с этим классом, остерегайтесь (то же самое, что и вы на виду). ;-) –

+1

что вам нужно? Вопрос не ясен. – Sara

ответ

1

Написанное-не, вы делаете ничего больше, чем писать буквальный характер, 'N', в .eq() метод. Попробуйте это:

$("table.table tr:eq(" + n + ")").append($newRow); 
+0

Это то, что я хотел. – Isoubb

0

Может быть попробовать использовать его как предыдущую строку, где вы использовали qoutes $("table.table tr:eq(" + n + ")").append($newRow);

0

Нет необходимости индексировать this внутри $.each, так как ваши аргументы показывают, что первые из них является индекс.

$(document).ready(function() { 
    var $tablerow = $('table.table tr'); 

    $tablerow.each(function(index,element){ 
     /* "this" is current row*/ 
     $(this).append("<td>" + index+1 + "</td>") 
    }); 
}); 
+0

Код короче, но результат отличается от того, что я хотел. – Isoubb

0

Заменить

var $newRow = $("<td>" + n + "</td>"); 
$("table.table tr:eq(n)").append($newRow);` 

с

var $newRow = $("<td>" + (n+1) + "</td>"); 
$("table.table tr:eq(" + n + ")").append($newRow); 

Это будет работать