Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2012, 20:04
Новичок на форуме
Отправить личное сообщение для Morfei Посмотреть профиль Найти все сообщения от Morfei
 
Регистрация: 09.02.2012
Сообщений: 2

Поиск и замена в выделенном тексте
Здравствуйте. Предистория такова. В JavaScript я как слон в балете. Понадобилось приделать кнопочку в редакторе, для облегчения жизни пользователей. Скрипт должен находить массив Русских слов в переменной и заменять эти слова, на такие же, только обрамленные тегами <b></b>. У меня даже получилось выделять слова, но вылезла другая неприятность. Скрипт не различает слов которые уже выделены. То есть если нажать кнопку еще раз, он добавляет еще по тегу с каждой стороны и получается уже <b><b>слово</b></b>. И так до бесконечности. То есть он не понимает, что слово уже выделено. Суть вопроса такова. Может у кого есть, что-то рабочее для этих целей? Нужно чтоб скрипт при первом нажатии находил слова из массива и обрамлял тэгами, при повторном нажатии очищал от тегов, а не добавлял еще пару. Фуф, отето я намолол надеюсь понятно.

(function() {

        tinymce.create('tinymce.plugins.replacer', {
        init : function(ed, url) {


        ed.addCommand('mcereplacer', function() {

           var replic = ed.selection.getContent();
        if (replic == "<strong>Режисер</strong>"){

        ed.execCommand('mceReplaceContent',false, ed.selection.getContent().replace(new RegExp('<strong>Режисер</strong>', 'igm'), 'Режисер' ) );

    });


        ed.addButton('replacer', {
        title : 'Замена строк',
        cmd : 'mcereplacer',
        image : url + '/img/searchreplace.gif'

});
}
});


Отето моя поделка, нерабочая уже. Но я честно признался, ничего не смыслю . Подмогите пожалуйста.

Нашел еще такой пример

//Сама функция замены слов в найденных нодах.
function replaceWords(opt) {
        // scope - глобальная область  поиска (document.body к примеру)
        // keyword - слово, которое мы ищем и заменяем
  findText(scope, new RegExp('\\b' + keyword + '\\b', 'gi'), function(node, match) {
      currentKeywordCount++;
     // Вот тут создаем элемент, в который будем заворачивать слово.
           var span = document.createElement('span');
     node.splitText(match.index + keyword.length);
     span.appendChild(node.splitText(match.index));
     node.parentNode.insertBefore(span, node.nextSibling);
  });
}

// Рекурсивный поиск в пределах (element) дерева DOM
function findText(element, pattern, callback) {
  for (var childi = element.childNodes.length; childi-->0;) {
    var child= element.childNodes[childi];
    if (child.nodeType == 1) {
      findText(child, pattern, callback);
    } else if (child.nodeType==3) {
      var matches= [];
      var match;
      while (match= pattern.exec(child.data)) matches.push(match);
      for (var i = matches.length; i-->0;) callback.call(window, child, matches[i]);
    }
  }
}
Но тут боюся голова лопнет.

Последний раз редактировалось Morfei, 09.02.2012 в 20:09.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2012, 21:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Morfei,
Вариант ...
var str = "<b>Режисер</b> Актёр",
reg = /(<b>)?(Режисер|Актёр)(<\/b>)?/g ;
str = str.replace(reg,function (a)
{
 return /<b>/.test(a)? a.replace(/<b>|<\/b>/g,'') :  '<b>'+a+'</b>'
})
alert(str);
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2012, 22:22
Новичок на форуме
Отправить личное сообщение для Morfei Посмотреть профиль Найти все сообщения от Morfei
 
Регистрация: 09.02.2012
Сообщений: 2

Сообщение от рони Посмотреть сообщение
Morfei,
Вариант ...
var str = "<b>Режисер</b> Актёр",
reg = /(<b>)?(Режисер|Актёр)(<\/b>)?/g ;
str = str.replace(reg,function (a)
{
 return /<b>/.test(a)? a.replace(/<b>|<\/b>/g,'') :  '<b>'+a+'</b>'
})
alert(str);
Не могу понять как это использовать в моей поделке. Это которая первая.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск определенного слова в тексте faforty Общие вопросы Javascript 4 24.09.2011 15:41
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
Поиск и замена в текстовом поле Roman Koff Events/DOM/Window 12 23.04.2010 23:35
Поиск выражения в тексте grusha jQuery 104 17.04.2009 04:12
Замена слов в тексте Dan T Общие вопросы Javascript 8 18.03.2009 12:36