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",但结果始终为空..

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

4

1 回答 1

3

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

因此,您需要更换您的线路

LoopThroughChildElements(parantEle.childNodes[i]);

(目前正在丢弃返回的元素)类似于

var rtn = LoopThroughChildElements(parantEle.childNodes[i]);
if (rtn != null)
    return rtn;
于 2013-02-25T11:14:38.453 回答