Moin!
Besser ist es, den aktuellen Anzeige-Zustand zu speichern (hier z.B. als boolschen Wert, da es nur zwei Zustände gibt)
An dem ist es gerade nicht. document.getElementById('E'+str).style.display enthält entweder nichts oder einen String. Der String kann einige verschiedene Werte (none, block, inline, ....) haben- und das hat signifikante Auswirkungen Demnach ist es kein boolschen Wert, nicht mal ein "quasiboolscher" Wert:
<html>
<body>
<div id="d1">DIV</div>
</body>
<script type="text/javascript">
alert("Die Eigenschaft style.display enthält den Wert: '"+ document.getElementById('d1').style.display+"'");
</script>
</html>
// onload:
Wo? Ich seh' nichts davon. ... Du schreibst zwar in der Erklärung etwas dazu, aber da der Code ja angeblich selbsterklärend sein soll, muß man den Code auch ohne diese Erklärung bewerten.
Was soll das? Der Code steht erkennbar unter dem HTML und wenn ich schon einen Remark "// onload" setze - der zum Code gehört(!) - dann kann ich mit allem Recht der Welt reklamieren, dass der Code selbsterklärend ist.
Dein Gemecker (genau das ist es, was Du abgeliefert hast) stellt den darin enthaltenen Widerspruch sehr gut dar.
Kommen wir zum konstruktiven Teil Deiner Äußerung:
Wozu die ganzen document.getElementById? Wenn du nicht vorhast, von den hier verwendeten Elementen welche zu entfernen/ersetzen, ist es unnötig, die Referenzen bei jedem Klick neu zu ermitteln.
Das war wegen des "selbsterklärend". Mir ist natürlich klar, dass ein
var obj=document.getElementById(string') sinnvoll ist. Aber nicht, so, wie Du es vorschlägst:
Das macht man ein Mal beim Laden der Seite und greift dann in der Funktion nur auf die schon vorhandenen Referenzen zu.
Besser nicht! Gerade weil hier jemand noch jquery empfohlen hat: Werden weitere Javascript-Bibliotheken geladen, dann können auch diese "globale" Variablen belegen oder überladen. Man kann also auf den Inhalt der Variablen bei der Behandlung eines späteren Ereignisses nicht mehr vertrauen. Deshalb ist diese Vorgehensweise nicht immer eine gute Idee. Innerhalb von Funktionen ist es ok.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix