2010-02-26 5 views
3

Возможно, это тривиальная проблема, я не знаю, почему эта функция выходит из цикла, когда она переходит в инструкцию else. Мне нужна эта функция для извлечения XML-документа.Рекурсивная функция в javascript

function xmlToArray(element){ 
    childs= element.childNodes; 
    if(childs.length != 1){ 
     for(var i=0;i<childs.length;i++){ 
     if(childs[i].hasChildNodes()){ 
      xmlToArray(childs[i]); 
     } 
     alert("exit from if"); 
     }//end for 
     alert("exit from for"); 
    }//end if 
    else{ 
     alert("do something with element"); 
    } 
    alert("end of func"); 
} 
+0

Вы имеете в виду, что он полностью удаляется из стека, каждая итерация его, когда она встречается с другим, или только на том уровне, на котором он находится? – Tarka

ответ

8

Поскольку childs не является локальной переменной, все вызовы xmlToArray работы на одних и тех же данных.

Попробуйте это:

function xmlToArray(element) { 
    var childs = element.childNodes; 
    // … 
} 

Использование var заявляет, что переменная в текущей области.

+0

да, это было тривиально :) Большое спасибо. –

Смежные вопросы