Im JavaScript-Unterkapitel Event-Handler geht es um die verschiedenen Events, die man benutzen kann, um JavaScript-Funktionen aufzurufen. Z.B. kann man dann mit der Kombination onmouseover mit onmouseout sehr leicht Hover-Effekte erzeugen, also ein Element highlighten, wenn man mit der Maus drüber fährt.
Im Kurs wird als Beispiel ein Schwarzweiß-Foto farbig, wenn die Maus drüber steht.
Als Aufgabe soll man selber eine Tabelle erstellen, bei der die Zeilen einen Hover-Effekt haben (indem die Hintergrundfarbe gewechselt wird). Außerdem soll man durch Klicken die Zeile markieren können (mit einer anderen Hintergrundfarbe). Diese Markierung soll dann nicht wieder weggehen, wenn man mit der Maus die Zeile verlässt, erst beim nächsten mal Draufklicken. Diese Aufgabe ist allerdings keine von den zu korrigierenden Einsendeaufgaben, aber da man ja am meisten lernt, wenn man es selbst ausprobiert …
Die Tabelle zu erstellen und die CSS-Klassen war ja erstmal einfach. Für die Zeilen gibt es drei unterschiedliche Klassen: normal, highlight und selected.
Erstmal mit dem Hover-Effekt anfangen: Die Events onmouseover mit onmouseout rufen jeweils eine JavaScript-Funktion auf. Dabei soll die CSS-Klasse der Zeile auf highlight bzw. normal geändert werden. Aber wie geht das? Das stand so nicht im Wissensbaustein. Also bei SelfHTML nachgeschaut und die style-Eigenschaft gefunden. Damit kann man per JavaScript jeden einzelnen Wert entsprechend der CSS-Eigenschaft setzen. Also z.B. mit style.backgroundColor die Hintergrundfarbe. Das geht dann zwar, ist aber nicht ganz das, was ich mir vorstelle. So würde ja das Aussehen nicht zentral in einem Style-Sheet festgelegt werden sondern wäre über den ganzen JavaScript-Code verteilt. Bei sowas werd ich gleich total unruhig, weil ich mir dann vorstelle, wie nervig es wäre, in einer umfangreichen HTML-Datei alle Stellen zu finden, an der ein bestimmtes Element einen Style zugewiesen bekommt.
Einfach this.class = “highlight” funktioniert leider nicht, um die CSS-Klasse zu ändern. Ein bisschen weiter suchen also. Die Lösung ist: className statt class. Und schon geht es. Hover geht schon mal.
Das Klicken und Selektieren ist auch kein Problem. Beim Klicken einfach den momentanen Klassennamen abfragen und dann entweder auf highlight oder selected setzen (also umdrehen). Und die Hover-Methoden müssen auch angepasst werden. Wenn die CSS-Klasse gerade selected ist, dann nicht hovern und die Auswahl bleibt.
Alles in allem hab ich etwa 50 Minuten gebraucht. Angegeben waren 60 Minuten, was ein super Ergebnis ist. Bei GDI hab ich meistens doppelt so lange wie angegeben benötigt.
Morgen ist dann Formulare mit JavaScript validieren dran. Inklusive der zweiten Einsendeaufgabe für JavaScript.