所以,这是我想要完成的一个相当简单的事情(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
答案 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/
时工作正常