簡體   English   中英

如何刪除所有空跨度<div> ?

[英]How to remove all empty spans in <div>?

我需要從 div 之一中刪除所有空跨度。 問題是,一旦 forEach 循環完成,以前不是空的跨度現在是空的,所以我想我可以使用 while 循環,但它似乎是循環自身。 我做錯了什么?

 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>

 function removeEmptySpans() { const tree = document.getElementById('tree'); const spans = Array.from(tree.querySelectorAll("span")).reverse(); for(let i=0; i<spans.length; i++) { if (spans[i].innerHTML.trim() === "") { // console.log(i, spans[i], spans[i].innerHTML, "---"); spans[i].remove(); } } } removeEmptySpans(); console.log('Remaining spans:', tree.querySelectorAll("span").length);
 <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>

該代碼列出了樹元素內所有可能的跨度。

查詢選擇器將構建一個前向列表,但為避免發生沖突,您只需反轉列表,這樣您就可以首先刪除空的子節點,並避免刪除具有不同跨度的父節點,其中一些填充了內容。

條件語句中的trim方法允許您刪除 innerHTML 前綴和后綴處的所有空格,以避免將函數與僅空格混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM