我正在尝试创建一个 JavaScript 脚本来突出显示页面上的某些文本。现在我在尝试用其他文本替换文本(来自正文 html)时遇到问题。我想用一些其他文本替换数组 highlights
中每个项目的所有实例。
我正在使用的代码是:
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]
是“Remember”,那么我得到的 exp
的打印输出是“/Remember/g”(不带引号)——但它是不替换页面上的“记住”一词。 '如果我将 new RegExp()
中的 highlights[i]
替换为简单的字符串“Remember”,它就会正常工作。关于哪里出了问题有什么想法吗?
编辑:
我解决了问题!创建 RegExp()
时,我传入 highlights[i].trim()
而不是仅仅 highlights[i]
来消除空格在开始/结束时,它似乎现在正在工作。
最佳答案
您的多行 server.responseText
存在一些问题。
我用空格而不是换行符替换了输入,并且所有替换都工作正常:
关于JavaScript 字符串replace()在替换变量时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12346483/