2011-05-10 3 views
0

Итак, это довольно простая вещь, которую я пытаюсь выполнить (javascript), но она уводит меня, и она все еще не работает. Я пытаюсь заменить определенные слова (которые находятся в теге pre). Например, слово "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>"); 
    } 

кодоблок является предварительно элемент, ключевые слова представляет собой массив, который содержит все слова, которые я хотел бы заменить.

Я пробовал так много способов, но я застрял в сообщениях об ошибках, подобных этим.

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"]

Chrome:

Error: INVALID_STATE_ERR: DOM Exception 11

Я предполагаю, что это что-то делать с HTML-теги (я попытался с помощью% Лт; и% Гт, а) , потому что я знаю, что это делает работу:

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

Спасибо за ваше время, Jacco

+0

Я думаю, что вы не можете использовать (набор) 'innerHTML' с XHTML (строго). –

+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 валидности.


Ваш текущий код отлично работает для меня в http://jsfiddle.net/gaby/Y92AE/

+0

Спасибо, но мой скрипт находится в отдельном файле .js. Кажется, это не имеет никакого значения. – Jacco

+0

@ Jacco, какой браузер (* и версия *) вы используете? –

+0

Google Chrome 11.0.696.65 Firefox 4.0.1 – Jacco

Смежные вопросы