2011-05-10 13 views
0

これは私が(JavaScriptの)達成しようとしているかなり簡単なことですが、それは私の年齢を取っている、それはまだ動作しません。私は特定の単語(それはpreタグ内にある)を置き換えることを試みています。たとえば、"static"という語句を "<span class="keyword">static</span>"に置き換える必要があります。私はXHTML strictを使用しています。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要素で、キーワードは、私が交換したいすべての単語を含む配列です。

私は非常に多くの方法を試しましたが、私はこれらのようなエラーメッセージが残っています。

のFirefox:

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

クローム:私はそれは、HTMLタグとは何か持って推測している

Error: INVALID_STATE_ERR: DOM Exception 11

(私は%のLTを使用してみました、と%GTを、代わりに) 、私はこの仕事をしていることを知っているので:お時間を

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

おかげで、あなたを、 Jacco

+0

で私のために正常に動作します。 –

+0

この問題を示す完全なhtmlとjavascriptの例を投稿することができますか? –

答えて

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の妥当性のために解析されることはありません。この方法が必要になります。


あなたの現在のコードは、私はあなたがXHTMLで(セット) `innerHTML`(厳格な)を使用することはできませんだと思うhttp://jsfiddle.net/gaby/Y92AE/

+0

ありがとう、しかし、私のスクリプトは別の.jsファイルにあります。それは何の違いもないようです。 – Jacco

+0

@Jacco、どのブラウザ(*とバージョン*)を使用しますか? –

+0

Google Chrome 11.0.696.65 Firefox 4.0.1 – Jacco