2010-02-26 103 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