Delegate and use a UL
const buttons = `<button type="button" class='edit'>edit</button> <button type="button" class="del">delete</button>`
const ul = document.getElementById("ss");
document.getElementById("add").addEventListener("click", function() {
document.getElementById("ss").innerHTML += `<li>
<span>${document.getElementById("text").value}</span> ${buttons}
</li>`
})
ul.addEventListener("click", function(e) {
const tgt = e.target;
if (tgt.classList.contains("edit") && !document.getElementById('etext')) {
const li = tgt.closest("li")
li.innerHTML = "<input type='text' id='etext' value='" + li.querySelector('span').textContent + "'><button type='button' class='done'>done</button>";
} else if (tgt.classList.contains("done")) {
tgt.closest("li").innerHTML = `${document.getElementById("etext").value} ${buttons}`
} else if (tgt.classList.contains("del")) {
tgt.closest("li").remove();
}
})
document.getElementById("delAll").addEventListener("click", function() {
ul.innerHTML = "";
})
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
<input type="text" id="text" value="">
<button id="add" type="button">add</button><button id="delAll" type="button">Delete all</button><hr/>
<ul id="ss"></ul>