我编写了这个函数来查找表中的特定元素:
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 :(得分:3)
您的return
仅在递归调用中将元素返回一级 - 您需要确保它一直返回到顶部。
因此,您需要更换行
LoopThroughChildElements(parantEle.childNodes[i]);
(目前正在丢弃返回的元素),如
var rtn = LoopThroughChildElements(parantEle.childNodes[i]);
if (rtn != null)
return rtn;