舉一個我想要的例子,想象這個字串:
$text = 'lorem ipsum <a href="/s/about">About us</a> lorem ipsum';
如果此字串包含一個具有以 開頭的 href的錨鏈接,則/僅將整個錨鏈接替換為其內部文本。此函式的結果將回傳以下內容:
lorem ipsum 關于我們 lorem ipsum
我已經為此目的調整了我過去使用過的功能:
function replaceAnyQueriedElementByItsText(markup, selector) {
const doc = (new DOMParser)
.parseFromString(markup, "text/html");
doc
.body
.querySelectorAll(selector)
.forEach(node => node
.parentNode
.replaceChild(
document.createTextNode(node.text),
node,
)
);
return doc.body.innerHTML;
}
這樣做的問題是它需要一個選擇器,例如一個類。但是我只想選擇具有特定href的錨點。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您可以a[href^="/"]用作選擇器。因此,作為函式的引數,它將是:
replaceAnyQueriedElementByItsText(markup, 'a[href^="/"]');
例子:
function replaceAnyQueriedElementByItsText(markup, selector) {
const doc = new DOMParser().parseFromString(markup, "text/html");
doc.body.querySelectorAll(selector).forEach(node =>
node.parentNode.replaceChild(
document.createTextNode(node.text),
node,
)
);
return doc.body.innerHTML;
}
// Example:
let markup = 'lorem ipsum <a href="/s/about">About us</a> lorem ipsum';
let stripped = replaceAnyQueriedElementByItsText(markup, 'a[href^="/"]');
console.log(stripped);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486011.html
標籤:javascript jQuery
上一篇:從物件回傳特定值
