Hallo,
if(ul.tagName == "UL"){
kann ich nicht ganz nachvollziehen. tagName ist doch eine Eigenschaft des all Objekts?!document.all.nav.tagName würde gehen.
Das klingt etwas missverständlich, da bist du wohl auf SELFHTML hereingefallen... Für den Fall:
document.all ist proprietäres Objekt, über welches Elemente auf verschiedene Weise angesprochen werden können. tagName ist keine Eigenschaft von document.all selbst (document.all.tagName wäre Unsinn), sondern liefert einfach nur gewisse Elemente zurück, z.B. ist document.all.nav nichts anderes als das Elementobjekt, das auch document.getElementById("nav") zurückliefert.
tagName ist also eine proprietäre Eigenschaft von Elementobjekten, die in mehreren Browsern unterstützt wird. Ob man das Objekt nun über document.all.usw. anspricht oder über standardisierte Methoden, ist zum Zugriff auf die Eigenschaft egal. Das bringt SELFHTML leider nicht so klar herüber, sondern suggeriert, die proprietären Eigenschaften würden irgendwie mit der proprietären Ansprechmethode zusammenhängen.
Es ist daher nichts damit gewonnen, eher Browserkompatibilität verloren, wenn man document.all zum Ansprechen benutzt. (Die standardkonforme Alternative zu tagName ist übrigens nodeName, wo im Falle eines Elementknotens der Tag-Name drinsteht.)
Mathias