有沒有辦法簡化HTML字串?就像從字串中洗掉所有冗余標簽一樣。
例如:
源 HTML:
<div><span><span>1</span></span><span>2</span></div>
預期輸出:
<div><span>12</span></div>
(甚至更少)
<div>12</div>
我知道一些庫quilljs可以做到這一點,但它是一個巨大的庫,對我的情況來說有點矯枉過正。
另外,https://github.com/htacg/tidy-html5是我想要的,但它沒有 js 版本
uj5u.com熱心網友回復:
您可以嘗試使用 DOMParser:
let s = `<div><span><span>1</span></span><span>2</span></div>`
let d = new DOMParser()
let doc = d.parseFromString(s, 'application/xml')
let tag = doc.children[0].tagName
let text = doc.children[0].textContent
let result = `<${tag}>${text}</${tag}>`
console.log(result)
uj5u.com熱心網友回復:
請參考下面的代碼,它可以幫助你走得更遠。
var childs = document.querySelectorAll("div#parent")
var tmpTexts = []
for (const c of childs) {
if (tmpTexts.includes(c.innerText)) continue
tmpTexts.push((c.innerText).trim())
c.parentNode.removeChild(c)
}
tmpTextArr = tmpTexts[0].split('\n');
console.log(tmpTextArr);
const para = document.createElement("div");
tmpTextArr.forEach(function(text) {
var node = document.createElement("div");
var nodeTxt = document.createTextNode(text);
node.appendChild(nodeTxt);
para.appendChild(node)
});
document.body.appendChild(para);
https://jsfiddle.net/Frangly/pnLgr8ym/66/
在 tmpTexts 中,對于每個新行 - 您應該添加一個 div 標簽。
創建一個新元素并使用 innerHTML 迭代 tmpTexts 陣列和 div 標簽
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392543.html
標籤:javascript html dom
上一篇:記錄用戶是否在Javascript'beforeunload'事件上單擊了'cancel'
下一篇:CssSelector是我可以用于shadowroot的唯一方法嗎?selenium.common.exceptions.InvalidArgumentException:訊息:無效引數:無效定位器
