I need to remove all empty spans from one of div. The problem is, once forEach loop is done, previously not empty spans are empty now so I thought I could use while loop but it seems to loop itself. What did I do wrong?
function removeEmptySpans() {
const tree = document.getElementById('tree')
const spans = Array.from(tree.querySelectorAll("span"))
let emptySpansExist = true
while (emptySpansExist) {
emptySpansExist = false
spans.forEach(span => {
if (span.innerHTML === "") {
span.remove()
console.log("empty span")
emptySpansExist = true
} else {
console.log("not empty span")
}
})
}
}
<div id="tree" onClick={removeEmptySpans}>
<span>
<span>
<span></span>
</span>
<span>
<span></span>
<span><span></span><span></span></span>
<span><span></span>content</span>
</span>
</span>
<span></span>
</div>