Показать сообщение отдельно
  #1 (permalink)  
Старый 25.07.2013, 17:24
Новичок на форуме
Отправить личное сообщение для Сергей_46 Посмотреть профиль Найти все сообщения от Сергей_46
 
Регистрация: 25.07.2013
Сообщений: 1

Удаление пустых узлов DOM
Всем привет, в JS новичок и вот задумался, как можно удалить все пустые узлы на HTML странице.
Написал скрипт - удаляет пустые узлы проходя по firstChild узлам. Есть условие поднятия на уровень выше, если кончились узлы для проверки. Но он почему-то не работает. Советы по кодированию приветствуются.
Проверяю в FF.
window.onload = function() {
		var body = document.body;
		var k = 0;
			function del_empty_nodes(obj) {
				if ((obj.childNodes.length != 0) && (obj.childNodes.length != 1)) {
					for (var i = 0; i < obj.childNodes.length; i++) {
						if (obj.childNodes[i] instanceof Text) {
							obj.removeChild(obj.childNodes[i]);
						}
					}
					del_empty_nodes(obj.firstChild);
				}else {
					if (obj.nextSibling.nodeType == 1) {
						del_empty_nodes(obj.nextSibling);
					}
					if (obj.parentNode == document.body) {
						return;
					}
					if (obj.parentNode.nextSibling.nodeType == 1) {
						var obj = obj.parentNode.nextSibling;
						del_empty_nodes(obj);
					}else {
						var obj = obj.parentNode.parentNode;
						del_empty_nodes(obj.nextSibling);
					}
					
				}
			}
		del_empty_nodes(body);	
	}

<div id="div">
		<form action="#" method="POST" id="form">
			<input type="radio" name="rad_1" onclick="selThis(this)"/>
			<input type="radio" name="rad_2" onclick="selThis(this)"/>
			<input type="radio" name="rad_3" onclick="selThis(this)"/>
		</form>
		<div>
			<p>Новый блок</p>
			<p>Новый блок</p>
			<p>Новый блок</p>
		</div>
	</div>
	<p>11111111111111111111111111111111111111</p>
Ответить с цитированием