По сути, у меня есть текстовое поле, в котором я пишу какой-то текст, нажимаю «Добавить пост», и новый пост будет добавляться к списку других постов (аналогично Twitter).У каждого из этих постов есть кнопка «удалить».
На данный момент, когда я нажимаю «Удалить» на каждом посте, у меня есть console.log
, который просто говорит «ТЕСТ».И это прекрасно работает.Однако после того, как я добавляю сообщение, то есть добавляется новый элемент, прослушиватель событий перестает работать даже для существующих кнопок «Удалить» (а не только для недавно добавленного).
Вот как янаписал прослушиватель событий для удаления.
for(var i = 0; i < deleteDOM.length; i++) {
deleteDOM[i].addEventListener("click", deleteEntryCont);
}
... Где deleteEntryCont
- это просто функция, которая на данный момент консоль регистрирует "ТЕСТ".
deleteDOM
- переменная дляdocument.getElementsByClassName("delete")
и является просто списком узлов.
Вот часть, где добавляется новый 'post':
entryList.forEach(function(entry) {
var entryItemDOM = document.createElement("li");
var entryTextDOM = document.createElement("p");
var metaWrapperDOM = document.createElement("div");
var timeStampDOM = document.createElement("span");
var deleteDOM = document.createElement("span");
// Create entry wrapper & class names
entryItemDOM.className = "entry";
entryItemDOM.className += ` ${entry.mood}-entry`;
entryItemDOM.id = entry.id;
// Insert entry at the top of the stack
domEl.entriesDOM.insertBefore(entryItemDOM, domEl.entriesDOM.firstChild);
entryItemDOM.appendChild(entryTextDOM);
entryTextDOM.innerHTML = entry.text;
entryItemDOM.appendChild(metaWrapperDOM);
metaWrapperDOM.className = "overflow-hidden";
metaWrapperDOM.appendChild(timeStampDOM);
timeStampDOM.className = "timestamp";
timeStampDOM.innerHTML = entry.timeStamp;
metaWrapperDOM.appendChild(deleteDOM);
deleteDOM.className = "delete";
deleteDOM.innerHTML = "Delete";
});
Где entryList
- это массив объектов, которые этот код вышеотображает в HTML.
В чем может быть проблема?