2013-02-25 86 views
4

我寫了這個功能,在表中查找特定元素:如何擺脫遞歸函數?

function LoopThroughChildElements(parantEle,flag) { 
      for (var i = 0; i < parantEle.childNodes.length; i++) { 
       if (parantEle.childNodes[i].childNodes.length > 0) { 
         LoopThroughChildElements(parantEle.childNodes[i]); 
        } 
       } 
       else { 
        if (parantEle.childNodes[i].id.indexOf("chkSelect") > 0) { 
         alert("Found"); 
         return parantEle.childNodes[i]; 
        } 
       } 
      } 
       return null; 
     } 

當執行這樣的:

var checkBox = LoopThroughChildElements(col); 
        alert(checkBox); 

我得到的"Found"警報,但結果保持空所有的時間..

這是爲什麼發生?當我得到我的結果時如何打破遞歸循環?

+0

是剩下的「}」在你的第一個代碼塊結束有關? – 2014-01-17 14:59:59

回答

3

您的return只會在遞歸調用中將元素返回上一級 - 您需要確保它一直返回頂部。

您因而需要更換線

LoopThroughChildElements(parantEle.childNodes[i]); 

的東西(這是目前丟棄返回的元素)像

var rtn = LoopThroughChildElements(parantEle.childNodes[i]); 
if (rtn != null) 
    return rtn;