Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Замена тега. (https://javascript.ru/forum/dom-window/66122-zamena-tega.html)

ureech 26.11.2016 16:14

Замена тега.
 
Здравствуйте.Помогите, что то не выходит поменять тег.
Есть текст в котором втречаются
<font color="#0000ff">текст</font>

Нужно заменить все такие теги на ссылки.Делаю так
$(document).ready( function () {
	el = document.getElementsByTagName('font')
    var i;
	var j = el.length;
	 for (var i = 0; i < j; i++) {
    $(el[i]).replaceWith('<a href=a'+i+'>' + $(el[i]).text() + '</a>');
  }

	});

Меняет через одну.

Coriolan161 26.11.2016 16:36

ureech,
Либо прикол в том что ты когда достаешь элементы через getElements...
ты достаешь `живую` коллекцию и после замены начинаются косяки с пересчетом индексов,
либо ошибка на твоей стороне в плане косяков в тексте

ureech 26.11.2016 16:39

Что значит `живую`?

Coriolan161 26.11.2016 18:07

ureech,
Ну так называют динамические коллекции в противоположность статичным, `не живым` возвращаемым querySelectorAll

Короче прикол в том, ты когда пихаешь в свою переменную el = getElements.. происходит следующее:

1) Если ты добавишь потом другие элементы того же типа в документ у тебя все отразится в твоей переменной el

2) Удалишь где-то потом один из элементов коллекции и у тебя el уменьшится сам

А с querySelectorAll так не получится. Он тебе отдает все что есть без сохранения обратной связи.

ureech 26.11.2016 19:36

Решил вопрос со стороны сервера.
$str = preg_replace('|<font[^>]*>([^<]*)</font>|', '<a class="word" href="">\1</a>', $str);

А на клиенте просто при клике добавляю адрес.

ureech 26.11.2016 21:19

Cсылки, то поправил, но при наведении на любую показывает один и тот же адрес. Как то не красиво.Решил менять при hover
$('.word').hover(function(){
		var text = $(this).text();
		$(this).atrr('href','/search/sqlite/'+text)
		})

Но не работает. Хотелось бы узнать почему?:)

xShift 26.11.2016 22:08

$(this).atrr('href','/search/sqlite/'+text)


attr

ureech 26.11.2016 23:31

Упсс...:-? Спасибо.


Часовой пояс GMT +3, время: 19:18.