如何摆脱递归函数?

时间:2013-02-25 11:12:05

标签: javascript

我编写了这个函数来查找表中的特定元素:

 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"的提醒,但结果始终为空。

为什么会这样?当我得到结果时如何打破递归循环?

1 个答案:

答案 0 :(得分:3)

您的return仅在递归调用中将元素返回一级 - 您需要确保它一直返回到顶部。

因此,您需要更换行

LoopThroughChildElements(parantEle.childNodes[i]);

(目前正在丢弃返回的元素),如

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