Javascript заменяет все значения в CKEditor

#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 после окончания / регулярного выражения, чтобы сделать замену глобальной (т. Е. По всему тексту несколько раз, а не только в первом случае).

Я также изменил положение вашей группы захвата в вашем регулярном выражении, поскольку предполагал, что вы не захотите сохранять [## и ##] после замены.