3 回答

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊
要用另一個字符串替換HTML中的字符串,請使用innerHTML的replace方法:
document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');
請注意,這將替換hello整個正文的第一個實例,包括您的HTML代碼中的任何實例(例如,類名等。),請謹(jǐn)慎使用-為了獲得更好的結(jié)果,請嘗試通過使用以下內(nèi)容定位代碼來限制替換的范圍document.getElementById或類似文件。
要替換目標(biāo)字符串的所有實例,請使用帶有g(shù)lobal標(biāo)志的簡單正則表達(dá)式:
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

TA貢獻(xiàn)1777條經(jīng)驗 獲得超3個贊
下面的功能對我來說很完美:
// Note this *is* JQuery, see below for JS solution instead
function replaceText(selector, text, newText, flags) {
var matcher = new RegExp(text, flags);
$(selector).each(function () {
var $this = $(this);
if (!$this.children().length)
$this.text($this.text().replace(matcher, newText));
});
}
這是一個用法示例:
function replaceAllText() {
replaceText('*', 'hello', 'hi', 'g');
}
$(document).ready(replaceAllText);
$('html').ajaxStop(replaceAllText);
您也可以像這樣直接進(jìn)行替換:
document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');
但是要小心,因為它也可能會影響標(biāo)簽,css和腳本。
編輯: 至于純JavaScript解決方案,請改用此方法:
function replaceText(selector, text, newText, flags) {
var matcher = new RegExp(text, flags);
var elems = document.querySelectorAll(selector), i;
for (i = 0; i < elems.length; i++)
if (!elems[i].childNodes.length)
elems[i].innerHTML = elems[i].innerHTML.replace(matcher, newText);
}

TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
我有同樣的問題。我在innerHTML上使用replace編寫了自己的函數(shù),但這會破壞錨鏈接等。
為了使其正常工作,我使用了一個庫來完成此任務(wù)。
該庫有一個很棒的API。包含腳本后,我這樣稱呼它:
findAndReplaceDOMText(document.body, {
find: 'texttofind',
replace: 'texttoreplace'
}
);
添加回答
舉報