Тема: UpJump: Q&A :)
Показать сообщение отдельно
  #181 (permalink)  
Старый 26.04.2011, 17:40
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Задам вопрос здесь, чтобы не плодить темы.

Писал функционал для создания ДОМ узлов, поудобнее страндартного, на его основе. И возвращает он documentFragment, так как есть возможность за раз вернуть несколько элементов в него запакованных. Но нужна была возможность преобразовывать DOM Элемент в хтмл и я сначала сделал так

//корневой элемент, который я буду возвращать
chest = document.createDocumentFragment();
//создаем тут все дерево в зависимости от параметров
//***************

//в конце
chest.html = function(){
 var div = document.createElement("DIV");
 div.appendChild(this);
 return div.innerHTML;

}
return chest;


Но по вставке фрагмента в узел, он исчезает. Вопрос в том, куда девается метод html() ? Удаляется garbage collector -ом?

Пока я этого не понял я еще так попробовал
Object.prototype.html = function(){
	if(!this.nodeType){
		return "";
	}
	
	var div = document.createElement("DIV");
	div.appendChild(this);
	
	return div.innerHTML;
}


Проверил на html элементах, работает нормально. Не стал проверять nodeType == 1 или 3, вдруг коммент захочется создать (8) или еще чего (не знаю зачем, просто интересно). Любую ли nodeType можно appendChild ?
И как как правильнее проверить Object что это XML node? (Жалко что нет прототипа у хтмл элементов в IE)
__________________
readOnly
Ответить с цитированием