Felix Riesterer: Zu viele onMouseouts!

Beitrag lesen

Lieber Rasmus,

Du hast ein Problem mit dem Bubbling des Events. Das Überfahren eines Bildelements findet aus der Perspektive des DOM-Baumes natürlich ebenso innerhalb des <tr>-Elements statt, da das Bildelement ein Nachfahrenelement dieses <tr>-Elements ist. Du kannst Dir vorstellen, wie eine Verschachtelung der Elemente eine ebenso verschachteltes Auslösen der Events erzeugt...

Mein Lösungsvorschlag ist der: Benutze das http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onmousemove@title=onmousemove-Event _dokumentweit_. Prüfe innerhalb dieses Events, in welchem Element wir uns gerade befinden (für IE event.srcElement, für andere event.target), und ob dieses ein Nachfahrenelement einer Zeile ist.

Du erstellst dann für jede Tabellenzeile zwei Dinge:
1.) eine Eigenschaft, in der steht, ob aufgehellt, oder abgedunkelt werden soll (geht mit true/false)
2.) eine Funktion, die den Vorgang des Aufhellens oder Abdunkelns jeweils einen Schritt weiterführt

Du erstellst für die Seite eine Art Zeitgeber (setIntervall), der der Reihe nach jede Tabellenzelle abklappert, um dort die jeweilige Funktion aufzurufen, damit dort eventuell anstehende Änderungen weitergeführt werden können.

Es ist sinnvoll, Dir dazu ein Rahmenobjekt zu erstellen (siehe Artikel zu Fader-Framework), in dem sowohl dieser Timer, als auch die Referenzen zu den Tabellenzeilen (und damit deren Animationsfunktionen) gespeichert werden.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)