Yadgar: Elementzugriff auf eine Schachtelungsebene beschränken?

Beitrag lesen

Hi,

if(...getElementsByTagName("div")[n].className=="x")

Ich habe zwischenzeitlich eine andere Variante ausprobiert

var i=1;
var knoten = document.getElementById("haupt").getElementsByTagName("p")[2];
  while (knoten.className != "n")
  {
    if (knoten.nodeName == "P")
    {
      var num = document.createTextNode(i.toString() + ". ");
      knoten.insertBefore(num, knoten.firstChild);
      i++;
    }
    if (knoten.nodeName == "DIV")
    {
      alert("DIV gefunden!");
      var j = 1;
      subknoten = knoten.firstChild;
      while (subknoten != null)
      {
        var subnum = document.createTextNode(i.toString() + "." + j.toString() + " ");

alert(subknoten.nodeName);
        subknoten.insertBefore(subnum, subknoten.firstChild);
        j++;
        subknoten = subknoten.nextSibling;
      }
    }

knoten = knoten.nextSibling;
}

Die <p>-Tags der oberen Hierarchieebene werden problemlos gefunden und korrekt nummeriert, bei den <p>-Tags der unteren Ebene (die innerhalb von <div>-Tags stehen, verhält sich das Programm merkwürdig: für "subknoten" wird als nodeName "#text" ausgegeben, nicht etwa "P". Folglich führt insertBefore zu einer Fehlermeldung, da Textknoten keine Kindknoten haben können... wieso ignoriert JavaScript hier die <p>-Tags innerhalb der <div>-Tags?

Bis bald im Khyberspace!

Yadgar