2010-02-26 104 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 2010-02-26 17:30:27

回答

8

由于childs不是一个局部变量,在相同的数据xmlToArray工作的所有呼叫。

试试这个:

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

使用var声明在当前范围变量。

+0

是的,这是微不足道的:) 非常感谢。 – 2010-02-26 17:39:53