Всем привет, в 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>