Hallo Leute,
Es ist zum Verzweifeln:
In einem div-Container stehen mehrere Absätze:
<div id="mySection" name="myName">
<p id="p17"><span><input id="r0" type="button" value="x"><div>Text1</div><input id="i0" type="button" value="+"></span></p>
<p id="p16"><span><input id="r1" type="button" value="x"><div>Text2</div><input id="i1" type="button" value="+"></span></p>
<p id="p15"><span><input id="r2" type="button" value="x"><div>Text3</div><input id="i2" type="button" value="+"></span></p>
<!-- usw. -->
</div>
Die input-Buttons sind zunächt per JS versteckt (style="visibility:hidden;"). Sie sollen nur sichtbar werden, wenn man mit der Maus auf das div-Element im Absatz zeigt, und wieder verschwinden, wenn man den Zeiger hinausbewegt. (Mit dem "x"-Button kann man dann den Absatz löschen, mit dem "+"-Button einen neuen eingefügen).
Zunächst wollte ich das mit "onmouseover" und "onmouseout" erledigen, aber der Eventhlandler sieht jetzt einfach so aus:
document.getElementById("mySection").onmouseout = function (e) {
e = e||event;
var elt = e.target||e.srcElement; // auslösendes DOM-Element ermitteln
if ( elt.id.match(/^p\d/) ) { // das p-Element hat ausgelöst:
e.stopPropagation(); // nicht weiter aufsteigen
toggleButtons(elt); // Funktion zum Ein-/Ausblenden der Buttons ausführen
}
};
Die Funktion zum Ein-/Ausblenden ändert bei jedem Aufruf die Anzeige der Buttons im Absatz: Wenn sie sichtbar sind, weden sie unsichtbar und umgekehrt.
Das funktioniert soweit, weil
- jedes Bewegen der Maus auf ein div im Absatz einen mouseout-Event für <p> auslöst, nämlich "raus aus dem umgebenden <p> hinein in ein Element, welches darin eingebettet ist" (=>Buttons einblenden)
- jedes Hinausbewegen aus dem Absatz natürlich wiederum einen mouseout-Event für <p> auslöst (=>Buttons ausblenden).
Das Problem ist jetzt aber, dass der Browser (FF) manche Events zu verschlucken scheint: Wenn man zu schnell über die Absätze fährt, dann bleiben in manchen Absätzen die Buttons eingeblendet :-((. Das darf bzw. kann aber doch gar nicht sein, oder?
Gruß, Don P