Ulli: rekursives finden von Nodes

Hallo,

ich bin am Grübeln über folgendes Problem:

Ich kenne das Elternelement (über die id) und weiß, dass dort drin irgendwo ein div ist, welches eine id in der Form 'radio_div_' + irgendwasdazu hat.

Ich suche nun eine Möglichkeit dieses div zu finden. Ich dachte an eine Rekursions-Schleife die sich durch alle Kinderelemente hangelt bis das div mit dem entsprechenden Namen gefunden ist.

function seekNode(node)
{
    if(node.hasChildNodes()) {
        if(node.firstChild.nodeName == "DIV") {
            for(var k = 0;k < node.firstChild.attributes.length; k++) {
                if(node.firstChild.attributes[k].nodeName == "id" &&
                   node.firstChild.attributes[k].nodeValue.substr(0,10) == "radio_div_") {
                    return node.firstChild.nodeName;
                }
            }
        }
        else {
            seekNode(node.firstChild);
        }
    }
    else {
        return node;
    }
}

Leider liefert mit diese Funktion 'undefined' als Rückgabewert (FF). Wenn ich versuche den Verlauf mittels alert() nachzuvollziehn, dann bekomme ich die merkwürdige Fehlermeldung, dass seekNode nicht definiert ist.
Was ist an meinem Gedankengang/der Funktion falsch?

Grüße, Ulli

  1. hi,

    Ich kenne das Elternelement (über die id) und weiß, dass dort drin irgendwo ein div ist, welches eine id in der Form 'radio_div_' + irgendwasdazu hat.

    Ich suche nun eine Möglichkeit dieses div zu finden. Ich dachte an eine Rekursions-Schleife die sich durch alle Kinderelemente hangelt bis das div mit dem entsprechenden Namen gefunden ist.

    wäre mir zu aufwendig.
    was spricht gegen getElementsByTagName?
    das lässt sich bekanntlich auch auf einen bestimmten node anwenden.

    var DivsInDeinemParent = ReferenzAufDeinParent.getElementsByTagName("div");
    var anzahl = DivsInDeinemParent.length;
    for(var i=0; i<anzahl; i++) {
       // prüfen, ob div eine ID hat, und ob diese mit "radio_div_" beginnt
       if(DivsInDeinemParent[i].id && DivsInDeinemParent[i].id.indexOf("radio_div_") == 0) {
          alert("Treffer!");
       }
    }

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      wäre mir zu aufwendig.
      was spricht gegen getElementsByTagName?
      das lässt sich bekanntlich auch auf einen bestimmten node anwenden.

      ... und es wurd Licht.
      Danke. Wollte mal wieder mit Bomben Fliegen fangen =)

      Grüße, Ulli