@uroot

Как добавить кнопку удалить к записям в таблице?

Есть следующий код ToDo листа: codepen.io

У меня не получается добавить кнопку Удалить к каждой записи в таблице. Вне зависимости от того на какую кнопку кликнули, удаляются последовательно только теги tr: кликнул один раз - удалился тег tr в первой строке, второй раз - во второй строке, хотя при этом кликаешь на другие. При этом вложенные теги td остаются.
Код удаления:
[].forEach.call(document.querySelectorAll('button.idTable'), function(el){
    el.addEventListener('click', function () {
        var tr= this.parentNode.parentNode;
        tableBody.deleteRow(tr.rowIndex);
    })
});

Кнопка Удалить в DOM добавляется так:
tdDelete = document.createElement('td');
tdDelete.innerHTML = `<button class="idTable">Удалить</button>`;
table.appendChild(tdDelete);

Я хочу удалять записи из таблицы, массива и localStorage.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
удаляются последовательно только теги tr <...> вложенные теги td остаются

Не вложенные. Давайте повнимательнее взглянем на создание новой строки в таблице:

table.appendChild(tr);
<...>
table.appendChild(tdLeft);  // "Название"
table.appendChild(tdRight); //"Описание"
table.appendChild(tdDelete); //"Навигация"

Ячейки у вас добавляются непосредственно в tbody, а вовсе не в tr.

Кроме того, обработчики клика по кнопкам удаления у вас добавляются один раз, при загрузке страницы, то есть кнопки всех добавленных пользователем строк обработчиков клика иметь не будут. Вам следует освоить такой приём, как делегирование.

UPD. Исправлено.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы