Как удалить строку таблицы с помощью кнопки удаления, назначенной каждой строке?

У меня есть таблица с кнопкой, которая добавляет строки в таблицу:

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" и т. д.

Нажатие на кнопку удаления для этой строки должно удалить эту строку. Проблема в том, что удаление строки изменяет количество строк в таблице, так что кнопка удаления иногда не нацелена на нужную строку.

Какую логику я могу добавить к функции удаления строки, чтобы она каждый раз нацеливалась на правильную строку?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Без использования идентификаторов:

delbtn.onclick = function(e){
  let clickedButton = e.target;
  clickedButton.closest("tr").remove();
}

Другие вопросы по теме