Как удалить tr через closest, используя event.target?

178
22 января 2022, 05:00

Всем привет! Подскажите, пожалуйста, как реализовать удаление строки tr через нажатие иконку fa-trash. Вот здесь DOM, внизу опишу свой скрипт.

А вот сам скрипт:

var table = document.querySelector('.table'); 
table.addEventListener('click', checkAct); 
 
function checkAct(event) { 
  var target = event.target; 
  if (target.tagName === 'TD' && target.className !== 'delete') { 
    editTd(target); 
  } else if (target.tagName === 'TD' && target.className === 'delete') { 
    deleteTr(target); 
  } 
} 
 
function deleteTr(target) { 
  var tr = target.closest('tr'); 
  if (tr) { 
    tr.parentNode.removeChild(tr); 
  } 
}
<table class="table"> 
  <tr> 
    <th>Имя</th> 
    <th>Фамилия</th> 
    <th>Удалить</th> 
  </tr> 
  <tr> 
    <td>Иван</td> 
    <td>Васильевич</td> 
    <td class="delete"><a href="#"><i class="fa fa-trash"></i></a></td> 
  </tr> 
  <tr> 
    <td>Влад</td> 
    <td>Анатольевич</td> 
    <td class="delete"><a href="#"><i class="fa fa-trash"></i></a></td> 
  </tr> 
</table> 
 
<form action="" id="form"> 
  <input type="text" name="" class="name" placeholder="Введите имя"> 
  <input type="text" name="" class="surname" placeholder="Введите фамилию"> 
  <button type="submit" class="btn">Добавить строку</button> 
</form>

Когда я нажимаю на область td-шки строка tr удаляется, а когда нажимаю на иконку fa-trash скрипт не работает, я понимаю что ошибка с target-ом в аргументе функции deleteTr, но не могу разобрать что можно сделать.

Помогите как реализовать данный скрипт, и обязательно через метод closest. И если сможете поясните поподробнее, очень прошу.

Answer 1

Вот :

document.querySelector('table').addEventListener('click', e => { 
  if (e.target.matches('.fa.fa-trash')) 
    e.target.closest('tr').remove() 
}) 
 
// или так 
// document.querySelector('table').addEventListener('click', e => 
//       e.target.matches('.fa.fa-trash') ? e.target.closest('tr').remove() : {})
<table class="table"> 
  <tr> 
    <th>Имя</th> 
    <th>Фамилия</th> 
    <th>Удалить</th> 
  </tr> 
  <tr> 
    <td>Иван</td> 
    <td>Васильевич</td> 
    <td class="delete"><a href="#"><i class="fa fa-trash">remove</i></a></td> 
  </tr> 
  <tr> 
    <td>Влад</td> 
    <td>Анатольевич</td> 
    <td class="delete"><a href="#"><i class="fa fa-trash">remove</i></a></td> 
  </tr> 
</table>

Логика дико простая, мониторя клик по таблице проверяем не нажали ли мы на нужную иконку, если да то удаляем строку

matches

READ ALSO
Проблема c импортом классов в WebDriverIo js

Проблема c импортом классов в WebDriverIo js

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

151
Создание новой строки в таблице. Javascript

Создание новой строки в таблице. Javascript

Я пытаюсь добавить новую строку в DOMЕсть инпуты Имя и Фамилия, и кнопка Добавить

196
Проблема с переводом кода с PascalABC.Net на JS

Проблема с переводом кода с PascalABC.Net на JS

Доброго времени суток знатоки! У меня есть код на PascalABC, который я пытаюсь перевести на JS, я вроде ка его переделал, но ответы выходят разные,...

120