У меня есть таблица с кнопкой, которая добавляет строки в таблицу:
var addBtn = document.getElementById("btn");
addBtn.onclick = addToTable;
function addToTable() {
var webdevtable = document.getElementById("webdevtable");
var webdevrow = webdevtable.insertRow(-1);
var webdevcell1 = webdevrow.insertCell(0);
var webdevcell2 = webdevrow.insertCell(1);
var webdevRowNum = webdevtable.rows.length - 1;
webdevcell1.innerHTML = webdevRowNum;
webdevcell2.innerHTML = "<button id='deleteRow" + webdevRowNum + "'>Delete This Row</button>";
var delbtnid = "deleteRow" + webdevRowNum;
var delbtn = document.getElementById(delbtnid);
delbtn.onclick = function() {
webdevtable.deleteRow(webdevRowNum);
}
}
<button id = "btn">Add row</button>
<table id = "webdevtable">
<tr>
<th>Row No.</th>
</tr>
</table>
При нажатии кнопки «Добавить строку» в таблицу добавляется новая строка с помощью кнопки «Удалить эту строку». Кнопке «Удалить эту строку» для каждой строки присваивается идентификатор в соответствии с номером строки.
Например. кнопка «Удалить эту строку» для первой строки имеет id = "deleteRow1"
. Для строки 2 эта кнопка будет иметь id = "deleteRow2"
и т. д.
Нажатие на кнопку удаления для этой строки должно удалить эту строку. Проблема в том, что удаление строки изменяет количество строк в таблице, так что кнопка удаления иногда не нацелена на нужную строку.
Какую логику я могу добавить к функции удаления строки, чтобы она каждый раз нацеливалась на правильную строку?
Без использования идентификаторов:
delbtn.onclick = function(e){
let clickedButton = e.target;
clickedButton.closest("tr").remove();
}