Хочу сделать кнопку в таблице, с помощью которой я мог бы удалять и добавлять строки в таблице, с добавлением я кое-как разобрался, а вот с удалением проблема.
<table id="myTable">
<thead>
<tr>
<th>Какое-то контекст</th>
<th>Какие-то кнопки</th>
</tr>
</thead>
<tr>
<td>Row1 cell1</td>
<td><a class="btn btn-warning" href="javascript:deleteRow(this);"><i class="icon-remove"></i></a></td>
</tr>
<tr>
<td>Row1 cell2</td>
<td><a class="btn btn-warning" href="javascript:deleteRow(this);"><i class="icon-remove"></i></a></td>
</tr>
</table>
Нашел 2 варианта.
Первый, который по идее должен определять индекс строки в которой была нажата кнопка Del и через передачу this
должна происходить передача инфо об объекте, в котором мы вычисляем rowIndex:
function deleteRow(btn) {
// var i = r.parentNode.parentNode.rowIndex;
// document.getElementById("myTable").deleteRow(i);
var row = btn.parentNode.parentNode;
row.parentNode.removeChild(row);
}
Но проблема в том, что браузер возвращает ошибку:
main:371 Uncaught TypeError: Cannot read property 'parentNode' of undefined
at deleteRow (main:371)
at <anonymous>:1:1
Нашел другой вариант:
$('body').on('click', 'btn btn-warning', function() {
$(this).parents('tr').remove();
});
Но проблема в том, что при нажатии удаляется полностью все строки, которые я предварительно добавляю с помощью
function myFunction() {
var table = document.getElementById("myTable");
var totalRowCount = table.rows.length;
console.log("Всего строк: "+totalRowCount);
var row = table.insertRow(totalRowCount);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "Новая строчка "+totalRowCount;
cell2.innerHTML = "<a class=\"btn btn-warning\" href=\"\"><i class=\"icon-remove\"></i></a>";
}
Как правильно удалять строки в таблице?