我試圖創建一個JavaScript腳本來突出顯示頁面上的某些文本。現在我有問題試圖用其他文本替換文本(從正文HTML)。我想用其他文本替換數組highlights
中每個項目的所有實例。替換變量時JavaScript字符串replace()不工作
,我正在使用的代碼是:
var responseText = server.responseText;
var highlights = responseText.split("\n");
var text = document.body.innerHTML;
for (i in highlights) {
if (highlights[i].length > 1) {
var exp = new RegExp(highlights[i], "g");
console.log(exp);
console.log(highlights[i]);
text = text.replace(exp, "XXXXXXXXXXX");
}
}
document.body.innerHTML = text;
目前,我得到了正確的價值爲打印和highlights[i]
我認爲我的正則表達式exp
;如果highlights[i]
是'記住',那麼我得到的exp
的打印輸出是'/ Remember/g'(不帶引號) - 但它並不代替頁面上的'記住'一詞。 '如果我用new RegExp()
中的highlights[i]
替換字符串「Remember」,它可以正常工作。有什麼錯誤的想法?
編輯: 我解決了這個問題!在創建RegExp()
時,我通過了highlights[i].trim()
而不是僅僅通過highlights[i]
來消除開始/結束處的空白,並且現在似乎正在工作。
不要使用'爲..in'通過陣列迭代,使用普通的for循環。 – Musa
'/ Remember/g'有什麼問題? – Thilo
您可以通過現場演示重現此行爲嗎? [JS小提琴](http://jsfiddle.net/),或類似? –