我正在尝试创建一个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
得到的打印输出是"/ReRemember/g"(不带引号)——但它不会替换页面上的单词"Remembe"如果我用字符串"记住"替换new RegExp()
中的highlights[i]
,它就可以正常工作。有什么问题吗?
编辑:我解决了问题!在创建RegExp()
时,我传入了highlights[i].trim()
,而不仅仅是highlights[i]
,以消除开头/结尾的空白,现在它似乎正在工作。
多行server.responseText
有一些问题。我用空格而不是换行替换了输入,所有的替换都很好:
http://jsfiddle.net/XTdgJ/1/