Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Перебор дерева элементов - не хочет работать скрипт... (https://javascript.ru/forum/css-html/28414-perebor-dereva-ehlementov-ne-khochet-rabotat-skript.html)

caca0 18.05.2012 18:01

Перебор дерева элементов - не хочет работать скрипт...
 
Вот функция - DOMTreeViewer, результат ее работы должно быть количество узлов html документа (count).
Не работает и все тут - пишет в консоли - hasChildNodes in not a function, уже мозги закипают..помогите ошибку найти...

var elem = document.getElementsByTagName('html');
console.log(DOMTreeViewer(elem));

// function DOMTreeViewer
function DOMTreeViewer(node) {
    if(node.hasChildNodes()) {
        for(var i = 0; i < node.childNodes.length; i++) {
            if(node.childNodes[i].nodeType == 1) {
                if(node.childNodes[i].hasChildNodes()) {
                    var count =+1;
                    DOMTreeViewer(node.childNodes([i]));
                }
            }
        }
    }
    return count;
}

vadim5june 18.05.2012 18:23

var elem = document.getElementsByTagName('html')[0];

caca0 18.05.2012 18:37

Цитата:

Сообщение от vadim5june (Сообщение 175255)
var elem = document.getElementsByTagName('html')[0];

Попробовал - молчит как партизан, ни сообщ0ений ни ошибок в консоли....

vadim5june 18.05.2012 18:43

объявите count глобальной
var count=0;
var elem = document.g....
.....
count++

vadim5june 18.05.2012 19:20

Ну и запускать надо после загзузки
var count=0;
window.onload=function(){var elem = document.g....}

vadim5june 18.05.2012 19:24

можно проще сделать
<script>var cn=0;
window.onload=function(){var els =
document.getElementsByTagName('*');
for(var i=0;i<els.length;i++){
if(els[i].hasChildNodes()){cn++;}
};alert(cn);}
</script>

caca0 18.05.2012 19:52

Цитата:

Сообщение от vadim5june (Сообщение 175267)
можно проще сделать
<script>var cn=0;
window.onload=function(){var els =
document.getElementsByTagName('*');
for(var i=0;i<els.length;i++){
if(els[i].hasChildNodes()){cn++;}
};alert(cn);}
</script>

Это действительно работает.. Цель правда была изначально написать рекурсивную функцию...буду пытаться дальше)

vadim5june 18.05.2012 20:07

<script>var count=0;alert(0);
window.onload=function(){var elem =
document.getElementsByTagName('html')[0];
function DOMTreeViewer(node) {
if(node.hasChildNodes()) {
for(var i = 0; i < node.childNodes.length; i++) {
if(node.childNodes[i].nodeType == 1) {
if(node.childNodes[i].hasChildNodes()) {
count++;
DOMTreeViewer(node.childNodes[i]);
}
}
}
}
return count;
}
alert('***'+DOMTreeViewer(elem));};
</script>


Часовой пояс GMT +3, время: 09:29.