Hallo !
Also, mit diesem dummen, simplem Baby-Script habe ich mich gestern eine Ewigkeit rumgeschlagen, bis ich zu diesem Ergebnis gekommen bin, was ich einfach nur GRAUENVOLL finde. Hier also die Seitenausschnitte mit dem Ergebnis:
Der Script:
<sript>
<!--
function expand(num)
{
teil = eval(document.all["expand"+num].style);
if(teil.display == "block") teil.display = "none";
else if(teil.display == "none") teil.display = "block";
else alert("nicht feststellbar !");
}
// -->
</script>
und dass, wo er wirken soll:
<ul>
<li><a href="javascript:expand(1);">Blo</a>
<p style="display:none" id="expand1">Blo ist das Gegenteil von Bli</p></li>
<li><a href="javascript:expand(2);">Bli</a>
<p style="display:none" id="expand2">Bli ist der Sonnengott</p></li>
<li><a href="javascript:expand(3);">Ble</a>
<p style="display:none" id="expand3">Ist ein Druckfehler und soll Bla heißen.
<a href="irgendwas.htm">Hier kannst du mehr dazu lesen.</a></p></li>
<li><a href="javascript:expand(4);">Bla</a>
<p style="display:none" id="expand4">Bla = Ra, welcher auch der Sonnengott ist (neben Bli und Re)</p></li>
</ul>
[Text ist reiner Scherz ;-)]
Schön, wie man unschwer erkennen kann, wollte ich also die <p>-Tags dynamisch erscheinen lassen, und dann halt wieder weg (wie es in vielen Win-Hilfedateien [.chm] gemacht wird, das hier soll auch ein Ausschnitt sein, muss daher auch nur unter IE laufen ;-)
Gut, soweit kein Problem denke ich mir. Mein zu-"expandierender"-Tag soll nicht im Link sein, sondern dahinter, sodass er selbst auch links enthalten kann. Also, machen wir es mal nach dem DOM-Syntax:
Ausschnitt aus der Seite:
<li><a href="#" onclick="expand(this);">lesen</a><p style="display:none">Text</p></li>
(anmerkung: der <p> ist nur hier im beispiel mal mit inline-css gemacht, damit ich nicht noch ein CSS-Beispiel reinbringen muss. href="javascript:expand(this)" hat nicht geklappt, da er this nicht als schlüsselwort erkannt hat. Warum ?)
Ok, und hier mein SCript (ich rekonstruiere mal aus meinem Gedächtnis) :
function expand(elem)
{
absatz = eval(elem.parentNode.lastChild); // sollte <p> ergeben, ergibt es aber nicht. Warum nicht ? Habe auch schon elem.parentNode.child[1] oder so was ausprobiert, nix geht.
if(absatz.style.display == "none") absatz.style.display = "block";
// usw.
}
So, dies hat sofern ich mich erinnern kann sogar funktioniert. Aber jetzt kommt das komische:
1. Seite geladen, alle Absätzte versteckt
2. Link angeklickt, Absatz gezeigt (egal welcher Link/absatz)
3. danach will man nochmal irgendeinen Link anklicken, aber es gibt eínen Laufzeit-
fehler. Wieso ?
Also, wo liegt der Fehler - was läuft da schief beim zweiten aufruf der Funktion ?
benji
Those who know don't talk.
Those who talk don't know.