Mal wieder ein Griever Schnellschuss.
Zuallererst solltest du eine HTML-Struktur basteln. Z. B. so:
<div name="hauptpunkt" class="mainpoint"><div class="pointtxt"><img src="right.gif" name="hauptpunkt_0"> Mein Menüpunkt</div>
<span name="hauptpunkt_sub" style="display:none;">
<div class="subpoint"></div>
</span>
</div>
...
Warum keine Listen?
Du hast schon, mal von "Divsuppen" gehört?
Du weißt das das name Attribut kein Standardattribut ist und nur für wenige Elemente erlaubt ist? (je nach DOCTYPE)
Und dann bastest du dir via getElementsByName und entsprechenden Abfragen die Funktionen ein. Z. B:
var o = document.getElementsByName("hauptpunkt")
Da du immer darauf bestehst (bzw. bestanden hast), dass deine Skripte nur im IE funktionieren müssen, wundert mich das. Den Ausnahmsweise hält sich der IE in diesen Punkt an den Standard. Elemente, die kein name Attribut haben (z.b. DIV oder SPAN), können mit getElementsByName nicht angesprochen werden.
for(var l = 0;l<o.length-1;l++)
Mit dieser Schleife vergisst du ein Element
{
l.OnMouseDown="opennode(this)"
}
Der Eventhandler wird in JS kleingeschrieben (JS ist case sensitive!) ausserdem erwartet er eine Funktionsreferenz und keinen String und this stünde in der Funktion automatisch zu Verfügung, als Parameter ist er hier nicht geeignet (wow, 3 Fehler in einer Zeile)
Mit opennode kannst du dann abfragen, welches das SrcElement ist.
Wenn alles richtig wäre, wäre in opennode this gleich dem "SrcElement"
Mein JS ist zwar jetzt schon ein wenig eingerostet. Aber ich denke mal, dass es so ginge.
Eingerostet würd ich das nicht nennen, vergessen, wäre der passendere Ausdruck.
Struppi.
Javascript ist toll (Perl auch!)