#javascript #html #ckeditor
#javascript #HTML #ckeditor
Вопрос:
HTML:
<textarea name="Editor" class="ckeditor" id="aboutme"></textarea>
Javascript:
var editor = CKEDITOR.instances.aboutme;
var edata = editor.getData();
for (var i = 0; i < edata.length; i ) {
var replaced_text = edata.replace(/([##. ?##])/, '<span style="background-color:yellow"><strong>$1</strong></span>'); // you could also use a regex in the replace
editor.setData(replaced_text);
}
Если текстовая область имеет значение, подобное приведенному ниже,
"Textxx [##YellowText##] Textxxxx"
Я заменяю [##YellowText ##] на желтый фон.Я имею в виду, что если текст начинается [## и заканчивается ##] , я заменяю значение желтым фоном.
Если у меня есть значение, подобное приведенному ниже, и если я запускаю приведенный выше код javascript, FirstText меняет желтый фон, однако secondText или другие текстовые файлы никогда не меняются.
"[##FirstText##] [##SecondText##] [##AnothrText##] [##xxText##]"
Я пытался использовать «для», однако это не сработало.
Как я могу изменить все текстовые значения, если начинается [## и заканчивается ##] на желтый фон в javascript?
Спасибо.
Ответ №1:
добавьте флаг global (g) в ваше регулярное выражение, чтобы заменить все совпадающие экземпляры.
var replaced_text = edata.replace(/([##. ?##])/g, '<span style="background-color:yellow"><strong>$1</strong></span>');
смотрите флаги:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
Редактировать:
основное отличие заключается в
original: /([##. ?##])/
modified: /([##. ?##])/g
Комментарии:
1. почему я не мог понять, что replaced_text должен быть недоступен как глобальный?
Ответ №2:
var replaced_text = edata.replace(/[##(. ?)##]/g, '<span style="background-color:yellow"><strong>$1</strong></span>');
Добавьте g
после окончания /
регулярного выражения, чтобы сделать замену глобальной (т. Е. По всему тексту несколько раз, а не только в первом случае).
Я также изменил положение вашей группы захвата в вашем регулярном выражении, поскольку предполагал, что вы не захотите сохранять [##
и ##]
после замены.