Показать сообщение отдельно
  #1 (permalink)  
Старый 10.08.2010, 14:43
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Удаление пустых текстовых нод работает только на верхнем уровне DOM
Имеется вот такая функция:

domNormalize = function ( element ) {
	var childs = element.childNodes;
	for ( var i = 0; i < childs.length; i++ ) {
		if ( childs[i].nodeType != 3 ) {
			domNormalize( childs[i] );
		} else if ( childs[i].nodeType == 3 && /\s*/.test(childs[i].textContent || childs[i].innerText) ) {
			childs[i].parentNode.removeChild( childs[i] );
		}
	}
	return element.innerHTML;
};


Например, если написать

domNormalize( document.body );


то будут удалены только те ноды, которые являются прямыми потомками BODY. Почему так происходит? В 5-й строчке ведь ясно написано, что если текущая нода — не текстовая, продолжать разбор дальше.
Ответить с цитированием