Показать сообщение отдельно
  #25 (permalink)  
Старый 08.04.2009, 15:07
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

var f = document.createDocumentFragment();
	while (div.firstChild)
		f.appendChild(div.firstChild);
	noda.parentNode.replaceChild(f, noda);


а так как div пустой то и div.firstChild-а нету, т. е. содержимое while не разу не сработает. И потом нода заменяется на пустой DocumentFragment.
Так в .childNodes попадают undefined.
Решение:
1) В TextNode.each добавляем if (I)
(в последнем моем посте он закоментирован)
И не только для этого случая.
Мало ли в каких ситуациях такое может случиться.
2) Зачем перезаписывать текстовые узлы содержащие пробельные символы.
Добавляем проверку: if (div.firstChild) {
(она тож закоментирована)
В результате пустых div-ов просто не будет.
3) Зачем вообще перезаписывать текстовые узлы содержание которых не изменилось.
Добавляем к проверке еще условие if (div.firstChild && div.innerHTML != noda.nodeValue) {


В посте №20 был пока лучший вариант.
Ответить с цитированием