Я сейчас работаю над мини-веб-приложением и хотел бы получить совет. Я знаю причину своей проблемы, и я знаю один способ ее обойти, но это будет означать отмену большой части работы, которую я уже проделал.
Проблема, с которой я столкнулся, заключается в том, что я сейчас использую строку шаблонавнутри цикла for для печати данных, и у меня есть кнопка удаления со слушателем. В настоящее время это работает только для последней кнопки в списке, и я знаю, что это потому, что я уничтожаю innerHTML каждый раз, когда использую html = x.
Что я хотел бы знать, так это .... isЕсть ли простой способ обойти это, или я должен просто вместо этого использовать append child и т. д.?
for(let prod of products){
console.log("Doc ID",doc.id);
const li1 = `
<p><div>${prod.name} <div class="right"><font class=pink-text>Location:</font> $${prod.location} <button data-remove-button-id="${doc.id}" class="btn-remove">Delete</button></div></div></p>
`;
html += li1;
} //end for loop
const li2 = `
<br />
<button class="btn blue darken-2 z-depth-0 right modal-trigger" data-target="modal-prodedit">Add/Edit Attributes</button><br />
</div>
</li>
`;
html += li2;
productList.innerHTML = html;
const removeBtn = document.querySelector(`[data-remove-button-id="${doc.id}"]`);
console.log("removeBTN",removeBtn);
removeBtn.addEventListener('click', (e) => {
e.preventDefault();
console.log(`deleted row ${e.target.dataset.removeButtonId}`);
});