Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2011, 21:37
Кандидат Javascript-наук
Отправить личное сообщение для Slavenin Посмотреть профиль Найти все сообщения от Slavenin
 
Регистрация: 20.11.2010
Сообщений: 143

Преобразование текста в html(на уровне объектов)
Всем доброго времени суток!
Возникла надобность преобразовать результат ajax-запроса строку с кодом html, так сказать, в живой html, но не выводить его на страницу а сохранить в переменную.
var text = '<div>тест</div>';

как сделать чтобы тип переменной text с текстового сменился на объект dom. И вообще возможно такое без размещения кода на странице?
eval не срабатывает.
__________________

Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2011, 21:54
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

var text = '<div>тест</div>';
var div = document.createElement('div');
div.innerHTML = text;
var result = div.firstChild;
alert(result);
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2011, 22:19
Кандидат Javascript-наук
Отправить личное сообщение для Slavenin Посмотреть профиль Найти все сообщения от Slavenin
 
Регистрация: 20.11.2010
Сообщений: 143

примерно такой алгоритм я сейчас и реализовал, но в нем необходимо создать контейнер для размещения в него текста, а можно ли обойтись без него, вот в чем вопрос
__________________

Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2011, 22:28
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Сообщение от Slavenin Посмотреть сообщение
примерно такой алгоритм я сейчас и реализовал, но в нем необходимо создать контейнер для размещения в него текста, а можно ли обойтись без него, вот в чем вопрос
Да это ж тебе дали для примера.
Встраивай в любой другой элемент (уже существующий) на странице.
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2011, 22:35
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Slavenin
а можно ли обойтись без него
А зачем?
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2011, 22:41
Кандидат Javascript-наук
Отправить личное сообщение для Slavenin Посмотреть профиль Найти все сообщения от Slavenin
 
Регистрация: 20.11.2010
Сообщений: 143

Сообщение от Kolyaj Посмотреть сообщение
А зачем?
очень хочется ответить "за шкафом"...

хотя бы потому что это лишний, не нужный никому, контейнер, который потом мешает. Прямая вставка в дом это ресурсоемкая операция, гораздо быстрее, провести объединение нужных элементов в памяти и потом за одно действие впихнуть в дом, особенно если объединяются большие объемы информации
__________________

Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2011, 22:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Что значит ненужный? Он нужен для того, чтобы преобразовать строку в DOM-объект. Потом GC его удалит, не надо за него переживать. Вставки в DOM тут не происходит, т.к. контейнер не в DOM-е, так что это всё быстро.

Непонятно, что вы объединяете и зачем вам строку в DOM-объект преобразовывать. Если у вас есть строки, так объедините их в виде строк, а потом в DOM через innerHTML пачкой вставьте. Если у вас есть много DOM-элементов, которые надо вставить на страницу, то для ускорения этого есть DocumentFragment.
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2011, 23:06
Кандидат Javascript-наук
Отправить личное сообщение для Slavenin Посмотреть профиль Найти все сообщения от Slavenin
 
Регистрация: 20.11.2010
Сообщений: 143

да, все, со всем разобрался, благодарю
__________________

Ответить с цитированием
  #9 (permalink)  
Старый 13.09.2011, 23:15
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

var text = '<div><p>текст параграфа</p><span>текст спана</span><a href="">текст ссылки</a></div>';
var div = document.createElement('div');
div.innerHTML = text;
alert(div.getElementsByTagName('p')[0].innerHTML);
alert(div.getElementsByTagName('span')[0].innerHTML);
alert(div.getElementsByTagName('a')[0].innerHTML);
Ответить с цитированием
  #10 (permalink)  
Старый 14.09.2011, 13:43
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Не хотите создавать каждый раз, так создайте один раз
var createElementsByHTML = (function(){
	var div = document.createElement("div");
	return function ( html ) {
		var res = [];
		div.innerHTML = html;
		while ( div.firstChild ) {
			res[ res.length ] = div.removeChild( div.firstChild );
		}
		return res;
	};
})();
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02