替换innerHTML中的字符串

时间:2011-05-10 20:07:14

标签: javascript xhtml replace innerhtml

所以,这是我想要完成的一个相当简单的事情(javascript),但它花了我很多年龄,它仍然无法正常工作。我正在尝试替换某些单词(在预标签内)。例如,单词"static"应替换为 "<span class="keyword">static</span>"。我正在使用严格的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>");
    }

codeBlock是pre元素,keywords是一个包含我想要替换的所有单词的数组。

我尝试了很多方法,但我遇到了类似这样的错误消息。

火狐:

  

[Exception ...“指定了无效或非法字符串”code:“12”nsresult:“0x8053000c(NS_ERROR_DOM_SYNTAX_ERR)”location:“file:/// C:/.../scripts.js Line: 33" ]

铬:

  

错误:INVALID_STATE_ERR:DOM例外11

我猜它与html标签有关(我尝试使用%lt;和%gt;而不是),因为我知道这确实有效:

  

codeBlock.innerHTML =   codeBlock.innerHTML.replace(新   RegExp(keywords [j],“g”),“test”);

谢谢你的时间, Jacco

1 个答案:

答案 0 :(得分:0)

您需要将代码包装在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>

Properly Using CSS and JavaScript in XHTML Documents

这样,您的代码就不会被解析为XHTML有效性。


您当前的代码在我http://jsfiddle.net/gaby/Y92AE/

时工作正常