Heute war wieder mal Minimalbesetzung. Detlef hat sich trotz Krankheit ins Büro geschleppt, wahrscheinlich will er alle anstecken, das war nicht so ganz ersichtlich. Wir haben kurz über den JSONObjectBuilder geredet und Performance-Schwachstellen erkannt und Detlef hat mir gezeigt, wie’s schneller geht
Morgen werd’ ich dann noch ne Debug-Version der Klasse schreiben, die bei Bedarf Fehleingaben erkennt und entsprechen reagiert. Da diese Fehlerbehandlung aber wieder teuer ist, wird es eben zwei Klassen geben. Eine für den Entwicklungsprozess und eine für den Produktiveinsatz.
Den Rest des Tages hab’ ich mich mit jQuery beschäftig. jQuery ist eine JavaScript Library, die für den Einsatz im Browser gedacht und entwickelt wurde.
Um jQuery zu benutzen musst du es hier runterladen und die folgende Zeile in den head-Tag deines XHTML-Dokumentes übernehmen:
<script src="jquery.js" type="text/javascript"/>
Fertig
Die wohl wichtigste Funktion von jQuery hört auf den Namen $ und wird wie folgt benutzt:
$("#headline")
macht im Grunde dasselbe wie document.getElementById(“headline”), allerdings mit zwei wichtigen Unterschieden.
- $ ist viel kürzer als document.getElementById
- $ versteht die Syntax von CSS-Selektoren, ist also um einiges mächtiger
Will man beispielweise auf alle h3-Elemente innerhalb eines Elements mit der ID “top” einen Clickhandler legen gäbe es drei verschiedene Wege:
- jedem h3-Tag ein onclick-Attribut zuweisen, etwa so:
<h3 onclick="javascript:clickhandler();">...</h3>
- eine globale JavaScript-Funktion schreiben, die auf body onload reagiert (also nach dem laden aufgerufen wird):
function init() { var top = document.getElementById("top"); var h3s = top.getElementsByTagName("h3"); for(var i=0; i<h3s.length; i++) { h3s[i].onclick = clickhandler; } } - oder eine jQuery-Anweisung schreiben:
$("#top h3").click(clickhandler);
Möglichkeit #1 hat denselben Nachteil wie die Nutzung des style-Attributes für CSS-Befehle. Layout und Struktur werden vermengt. Und man muss kein Genie sein, um zu sehen welche der letzten beiden Möglichkeiten die einfachere ist