Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2013, 22:28
Новичок на форуме
Отправить личное сообщение для qaim Посмотреть профиль Найти все сообщения от qaim
 
Регистрация: 13.11.2012
Сообщений: 9

Помогите с перебором массива
$(function(){
    var arr = [ "A", "B", "C" ];
    $.each(arr, function() {
var apl = this;
	$("pre:contains('" + apl + "')").each(function(){
		var re = new RegExp(apl,"gim");
        $(this).html($(this).text().replace(re, "<span style=\"color:red\">" + apl + "</span>"));
        
});
     });

Почему-то происходит замена только по последнему элементу в массиве.
А нужно что бы по всем элементам происходила замена.
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2013, 23:32
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

метод .text() - возвращает содержимое без тегов.

И получается что:
1) Получили содержимое в виде текста, обернули A в span
2) Получили содержимое в виде текста (А уже без span'a), обернули B в span
3) Получили содержимое в виде текста (А и B уже без span'a), обернули C в span

Так что, вместо
$(this).text().replace
надо
$(this).html().replace
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2013, 00:20
Новичок на форуме
Отправить личное сообщение для qaim Посмотреть профиль Найти все сообщения от qaim
 
Регистрация: 13.11.2012
Сообщений: 9

Сообщение от nyols Посмотреть сообщение
метод .text() - возвращает содержимое без тегов.

И получается что:
1) Получили содержимое в виде текста, обернули A в span
2) Получили содержимое в виде текста (А уже без span'a), обернули B в span
3) Получили содержимое в виде текста (А и B уже без span'a), обернули C в span

Так что, вместо
$(this).text().replace
надо
$(this).html().replace
Премного благодарен!!!
Всё работает!
JS совсем не мой конек, потому не очень просто с ним работать...

Подскажите ещё, если не сложно, как быть с ненужными паттернами?
Вот к примеру:

Есть массив: А, А1, В, В1
Скрипт находит и оборачивает А1 в тексте дважды.
Как этого можно избежать? ...или запретить проход по уже обернутым поисковым фразам.
Ответить с цитированием
  #4 (permalink)  
Старый 24.05.2013, 00:29
Новичок на форуме
Отправить личное сообщение для qaim Посмотреть профиль Найти все сообщения от qaim
 
Регистрация: 13.11.2012
Сообщений: 9

Что бы понятней было, наверно, проще показать, что я пытаюсь сделать...
Аккорды
Задача у меня не очень сложная, но со своими камнями.
Хочу обернуть аккорды другой разметкой и аяксом подгружать аппликатуры...
С аяксом проблем не будет, а вот с правильным парсингом голову приходится поломать, так как есть тексты и на английском...
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2013, 00:34
Новичок на форуме
Отправить личное сообщение для qaim Посмотреть профиль Найти все сообщения от qaim
 
Регистрация: 13.11.2012
Сообщений: 9

На php в общем-то больших проблем не вижу как это реализовать, но хотелось бы поменьше грузить сервер, потому решил переложить на клиента это дело...
Ответить с цитированием
  #6 (permalink)  
Старый 30.05.2013, 16:31
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

а почему не через функцию .wrap?

А чтобы два раза не обворачивал добавь проверку: А не обернут ли уже?

Последний раз редактировалось Kvark, 30.05.2013 в 16:33.
Ответить с цитированием
  #7 (permalink)  
Старый 30.05.2013, 17:06
Аватар для ANAGAMA
Аспирант
Отправить личное сообщение для ANAGAMA Посмотреть профиль Найти все сообщения от ANAGAMA
 
Регистрация: 29.05.2013
Сообщений: 49

ЧТо бы я делал.

Добавить к div id <div class="song_txt" id="song">

Считать весь этот div в строку s= $('#song').html();

Использовать s=s.replace(/(Em)/gm,'<span ...>$1</span>');

не забудьте модификатор m.

Вывести строку взад $('#song').html(s);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста! Agness Общие вопросы Javascript 2 04.04.2012 19:15
Помогите удалить элемент двумерного массива Dorsaj Общие вопросы Javascript 5 18.10.2010 18:49
Помогите разобраться с повторением при генерации массива (Javascript) JsLoveR Javascript под браузер 4 16.12.2009 15:26
Помогите решить задачку---Найти сумму элементов массива uniQ Общие вопросы Javascript 3 02.05.2009 01:20