2011-05-10 76 views
0

所以,这是一个相当简单的事情,我试图完成(JavaScript),但它花了我很多时间,它仍然无法正常工作。我试图替换某些单词(在预标签内)。例如,字"static"应替换为 "<span class="keyword">static</span>"。我严格使用XHTML。替换innerHTML中的字符串

我的做法是这样的:

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

代码块pre元素,关键词是包含所有我想替换单词的数组。

我已经尝试了很多方法,但我被这些错误消息卡住了。

火狐:

[Exception... "An invalid or illegal string was specified" code: "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" location: "file:///C:/.../scripts.js Line: 33"]

铬:

Error: INVALID_STATE_ERR: DOM Exception 11

我猜它有什么用html标签做(我使用LT%尝试;和%GT;相反) ,因为我知道这样做的工作:

codeBlock.innerHTML = codeBlock.innerHTML.replace(new RegExp(keywords[j], "g"), "test");

感谢您的时间, Jacco

+0

我认为你不能使用(套)'innerHTML'与XHTML(严格)。 – 2011-05-10 20:11:36

+0

任何机会,你可以发布一个完整的HTML和JavaScript的例子,展示这个问题? – 2011-05-10 20:41:50

回答

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/

+0

谢谢,但我的脚本虽然在一个单独的.js文件。它似乎没有任何区别。 – Jacco 2011-05-10 20:22:51

+0

@Jacco,你使用什么浏览器(*和版本*)? – 2011-05-10 20:30:16

+0

Google Chrome 11.0.696.65 Firefox 4.0.1 – Jacco 2011-05-10 20:36:42