下面的函式在檔案正文中JavaScript為每個匹配的單詞添加一個<mark>標簽。
var words = ["apple", "banana", "carrot", "pear"];
for (var i=0; i < words.length; i ) {
var replace = new RegExp(words[i],"g");
var page = document.body.innerHTML;
var newPage = page.replace(replace, `<mark>${words[i]}</mark>`);
document.body.innerHTML = newPage;
}
這樣,它會突出顯示<body>if 中的一個單詞,它是陣列中的一個元素words。
我遇到的問題是document.body.innerHTML每次迭代都會替換。你知道如何替換頁面中限制document.body.innerHTML = newPage為 1 的匹配詞嗎?
提前感謝您的回復!
uj5u.com熱心網友回復:
在回圈之前獲取 innerHTML 并在 loo 之后設定 innerHTML。您可以使用 replaceAll 更改所有匹配的單詞
var words = ["apple", "banana", "carrot", "pear"];
var page = document.body.innerHTML;
words.forEach((word) => {
page = page.replaceAll(word, `<mark>${word}</mark>`);
});
document.body.innerHTML = page;
<div> apple abc banana cd apple </div>
uj5u.com熱心網友回復:
回圈前讀取字串,回圈內修改,回圈后更改檔案正文。
const words = ["apple", "banana", "carrot", "pear"];
let page = document.body.innerHTML;
for (const word of words) {
page = page.replaceAll(word, `<mark>${word}</mark>`);
}
document.body.innerHTML = page;
"apple", "banana", "carrot", "pear"
或者您可以使用reduce:
const words = ["apple", "banana", "carrot", "pear"];
document.body.innerHTML = words.reduce((page, word) => page.replaceAll(word, `<mark>${word}</mark>`), document.body.innerHTML);
"apple", "banana", "carrot", "pear"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/413805.html
標籤:
