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"れますが、結果は常に null のままです..

なぜこれが起こるのですか?結果を取得したときに再帰ループを破る方法は?

4

1 に答える 1

3

再帰return呼び出しで 1 レベル上の要素を返すだけです。一番上まで返されるようにする必要があります。

したがって、ラインを交換する必要があります

LoopThroughChildElements(parantEle.childNodes[i]);

(現在、返された要素を破棄しています)のようなもので

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