Javascript 替换innerHTML中的字符串

Javascript 替换innerHTML中的字符串,javascript,xhtml,replace,innerhtml,Javascript,Xhtml,Replace,Innerhtml,所以,这是我试图完成的一件相当简单的事情(javascript),但它花费了我很多时间,而且仍然不起作用。我试图替换某些单词(在pre标记中)。例如,单词“static”应替换为 “静态”。我使用的是XHTML 我的方法是这样的: for (var j = 0; j < keywords.length; j++) { codeBlock.innerHTML = codeBlock.innerHTML.replace(new RegExp(keywords[j], "

所以,这是我试图完成的一件相当简单的事情(javascript),但它花费了我很多时间,而且仍然不起作用。我试图替换某些单词(在pre标记中)。例如,单词
“static”
应替换为
“静态”
。我使用的是XHTML

我的方法是这样的:

for (var j = 0; j < keywords.length; j++)
    {
        codeBlock.innerHTML = codeBlock.innerHTML.replace(new RegExp(keywords[j], "g"), "<span class=\"keyword\">" + keywords[j] + "</span>");
    }
for(var j=0;j
codeBlock是前置元素,keywords是一个数组,其中包含我要替换的所有单词

我已经尝试了很多方法,但我总是遇到这样的错误消息

火狐:

[异常…”指定了无效或非法字符串“代码:”12“nsresult:“0x8053000c(NS\u错误\u DOM\u语法\u错误)”位置:file:///C:/.../scripts.js 第33行“]

铬:

错误:无效\u状态\u错误:DOM异常11

我猜这与html标记有关(我尝试使用%lt;和%gt;),因为我知道这是可行的:

codeBlock.innerHTML= codeBlock.innerHTML.replace(新的 RegExp(关键字[j],“g”),“test”)

谢谢你抽出时间,
Jacco

您需要将代码包装在CDATA中

<script type="text/javascript">
 //<![CDATA[
for (var j = 0; j < keywords.length; j++)
    {
        codeBlock.innerHTML = codeBlock.innerHTML.replace(new RegExp(keywords[j], "g"), "<span class=\"keyword\">" + keywords[j] + "</span>");
    }
 //]]>
</script>

//

这样,就不会对代码进行XHTML有效性分析



您当前的代码在

上对我来说很好,我认为您不能将(set)
innerHTML
与XHTML(严格)结合使用。您是否有可能发布一个完整的html和javascript示例来展示这个问题?谢谢,但我的脚本位于单独的.js文件中。这似乎没有什么区别。@Jacco,你使用什么浏览器(和版本)?谷歌Chrome 11.0.696.65火狐4.0.1Oh!我刚刚注意到我的数组中有“class”这样的词,这对span标记中的class属性肯定没有帮助。谢谢你的帮助。