Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2014, 13:14
Аватар для 1n3gan
Интересующийся
Отправить личное сообщение для 1n3gan Посмотреть профиль Найти все сообщения от 1n3gan
 
Регистрация: 10.04.2013
Сообщений: 27

Разделить строку и обернуть ее в тэг
привет всем.

что имеется:
<div class="title">это строка номер | один.</div>
<div class="title">это строка номер | два.</div>
<div class="title">это строка номер | три.</div>


что нужно:
то, что идет после символа | обернуть в тэг <span>
в итоге должно получиться так:
<div class="title">это строка номер <span>один.</span></div>
<div class="title">это строка номер <span>два.</span></div>
<div class="title">это строка номер <span>три.</span></div>


что я делаю:
var title = $('.title:contains("|")');
var txt = title.html().split("|");
var output = ""
for(var x=0;x<txt.length;x++) {
  output = output + "<span>"+txt[x]+"</span>"
}
title.html(output);


что у меня получается:
1) <div class="title">это строка номер <span>один.</span></div>
2) <div class="title">это строка номер <span>один.</span></div>
3) <div class="title">это строка номер <span>один.</span></div>

Объясните, пожалуйста, где ошибка?
Спасибо за помощь заранее

Последний раз редактировалось 1n3gan, 18.08.2014 в 13:16.
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2014, 13:23
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

$('.title:contains("|")').each(function () {
    this.innerHTML = this.innerHTML.replace(/\|(.*)/, '<span>$1</span>');
});
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2014, 13:29
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

var title = $('.title:contains("|")'); // присваивает title массив элементов с классом title, внутри которых есть символ | (три элемента)
var txt = title.html().split("|"); // присваивает txt другой массив, который создается из строки, нахожящейся в первом элементе массива title (два элемента)
var output = ""
for(var x=0;x<txt.length;x++) {//цикл отрабатывает два раза, т.к. в массиве txt два элемента: "это строка номер" и "один."
  output = output + "<span>"+txt[x]+"</span>"//присваивает переменной output значение "<div class="title">это строка номер <span>один.</span></div>"
}
title.html(output);//меняет внутри всех элементов массива title код на содержимое переменной output

если вам надо было найти косяк, а не решение..

Последний раз редактировалось Viral, 18.08.2014 в 13:31.
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2014, 13:30
Аватар для 1n3gan
Интересующийся
Отправить личное сообщение для 1n3gan Посмотреть профиль Найти все сообщения от 1n3gan
 
Регистрация: 10.04.2013
Сообщений: 27

Octane, Viral, спасибо большое, парни! теперь разобрался.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст обернуть в кавычки delias Общие вопросы Javascript 4 29.04.2014 10:48
Как обернуть текст в рамку? kot197676 Firefox/Mozilla 2 12.03.2014 23:16
Вставить значение переменных в строку someone Общие вопросы Javascript 2 03.11.2013 00:14
Обрезаем строку по словам gJam Общие вопросы Javascript 4 22.11.2012 17:57
необходими разделить строку на слова и положить слова в массив при помощи цикла for oneee Общие вопросы Javascript 5 05.09.2012 14:30