2011-05-10 70 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