'How to delete an item from an unordered list?
function render(Leads){
let listItems = ""
for(i = 0; i < Leads.length; i++){
listItems += `
<li>
<a href='${Leads[i]}' target='_blank'>
${Leads[i]}
</a>
<button id="delete">❌</button>
</li>`
}
ulEl.innerHTML = listItems}
I am trying to make a leads tracker app and I have written this code. I want to make the delete button functional, but I have no idea how I can delete a specific item from an unordered list.
Solution 1:[1]
- in the for loop make id=
item${i}
- Add another function that take id as a prameter Ex: deleteItem(id)
- in the deleteItem function you can filter and delete what you want
Solution 2:[2]
the first problem is there are multiple button elements with same id, id should be unique.
Here you can add an eventListenar to the ulEl element and on clicking the button we should remove the element
function render(Leads){
let listItems = ""
for(i = 0; i < Leads.length; i++){
listItems += `
<li>
<a href='${Leads[i]}' target='_blank'>
${Leads[i]}
</a>
<button id="delete${i}">?</button>
</li>`
}
ulEl.innerHTML = listItems;
}
ulEl.addEventListener("click", function (event) {
if(event.target.id?.includes("delete")) {
let id = +event.target.id.replace("delete", "") // to get the last character
leads.splice(id, 1); // remove the element(please use the corresponding
// variable, here I am using leads)
list.innerHTML = ""; // clearing current list
list.innerHTML = leads.reduce((acc, curr, idx) => {
acc += `
<li>
<a href='${curr}' target='_blank'>
${curr}
</a>
<button id="delete${idx}">?</button>
</li>`;
return acc;
}, "");
}
});
Hope this helps thank you
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | ahmed-m-abdelfatah |
Solution 2 |