26.02.2014 Aufrufe

LinuxUser Programmieren (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

SCHWERPUNKT<br />

Javascript<br />

LISTING 1<br />

sprachen basieren im Kern auf namenlosen,<br />

an Variablen gebundene<br />

Funktionen (anonyme Funktionen<br />

oder Lambda-Funktionen<br />

genannt), die Sie auch als Parameter<br />

für Funktionen verwenden<br />

dürfen. Einen vollständigen Überblick<br />

über sämtliche Sprachelemente<br />

von Javascript mit Ausnahme<br />

der Objektorientierung<br />

finden Sie im Web [2].<br />

Nachhilfe gefragt<br />

Kaum ein Programmierer spricht<br />

die DOM-API heute noch direkt<br />

an: Zu sehr unterscheidet sich die<br />

Implementation von Browser zu<br />

Browser, obwohl die Zahl der Unterschiede<br />

in den letzten Jahren<br />

abgenommen hat. Von solchen<br />

Problemen abgesehen, ist das<br />

DOM an sich gesehen unhandlich<br />

und sperrig. Deswegen nutzen die<br />

meisten Programmierer die Bibliothek<br />

JQuery [3] als Zwischenschicht.<br />

Dieser einführende Artikel<br />

konzentriert sich ausschließlich<br />

auf diesen Ansatz.<br />

01 <br />

02 <br />

03 $(function(){ //ausführen, wenn Anzeige fertig<br />

04 var colors = ["red", "green", "blue", "yellow"];<br />

05 var names =["rot", "grün", "blau", "gelb"];<br />

06 var sayings = {<br />

07 "rot":"Rot steht für die Liebe.",<br />

08 "grün":"Grün sind die Bäume im Mai.",<br />

09 "blau":"Auch roter Wein macht blau.",<br />

10 "gelb":"Das Angesicht des Neids ist gelb."<br />

11 };<br />

12<br />

13 for (var i in colors){<br />

14 var div = $("");<br />

15 div.css({"height":"50px", "width":"150px",<br />

"background-color":colors[i]});<br />

16 div.addClass("colorbox");<br />

17 div.html(names[i]);<br />

18 $("body").append(div);<br />

19 }<br />

20<br />

21 $(".colorbox").on("click", function(){<br />

22 var clicked = $(this);<br />

23 var farbe = clicked.text();<br />

24 alert(sayings[farbe]);<br />

25 });<br />

26 });<br />

27 <br />

Das erste kleine Übungsprogramm<br />

fügt mithilfe einer Schleife vier<br />

farbige Boxen in eine leere Seite<br />

ein. Als Beispiel für Interaktivität<br />

öffnet ein Klick auf eine der Boxen<br />

einen Dialog mit einem abhängig<br />

von der Farbe wechselnden Text.<br />

Die Zeilen aus Listing 1 zeigen viele<br />

Grundzüge der Javascript-Programmierung.<br />

In Abbildung B sehen<br />

Sie das Ergebnis.<br />

Zeile 1 bindet die JQuery-Bibliothek<br />

ein, die beim Manipulieren<br />

des HTML-Codes zum Einsatz<br />

kommt. Enthält das Tag<br />

ein Attribut src, verweist<br />

es auf eine externe Javascript-<br />

Datei. In unserem Fall deutet die<br />

URL auf die von Google gehostete<br />

Version von JQuery, was den<br />

Download der Bibliothek erspart.<br />

Der zweite Script-Tag enthält<br />

kein entsprechendes Attribut.<br />

Dafür umschließt er direkt eingebetteten<br />

Programmcode. Der Typ<br />

text/javascript verweist in beiden<br />

Fällen auf die Sprache der eingebetteten<br />

Skripte.<br />

Im Zeichen des Dollars<br />

Gleich als erstes Zeichen des<br />

Java script-Codes springt das Dollarzeichen<br />

ins Auge. Über dieses<br />

sprechen Sie alle Funktionen von<br />

JQuery an. Die erste Zeile erweist<br />

sich für Neulinge oft als große<br />

Hürde in Bezug auf das Verständnis:<br />

Sie öffnet den JQuery-Aufruf<br />

$(), der erst vor dem schließenden<br />

Script-Tag endet.<br />

Damit hat es folgende Bewandtnis:<br />

Der Browser führt Javascript-<br />

Code, auf den er beim Parsen der<br />

HTML-Seite stößt, immer sofort<br />

aus. Dabei passiert es jedoch mitunter,<br />

dass der Browser mit der<br />

Anzeige der Seite noch nicht fertig<br />

ist. Wenn ein Skript dann versucht,<br />

auf Elemente der Seite zuzugreifen,<br />

scheitert es.<br />

Um dieses Problem zu vermeiden,<br />

kapselt die Funktion $() denjenigen<br />

Teil des Codes, den JQuery<br />

erst dann ausführt, wenn der<br />

Browser mit der Anzeige des<br />

HTML-Codes fertig ist. In unserem<br />

Beispiel umfasst $() den gesamten<br />

Code. Genau genommen<br />

umschließt es den Code nicht<br />

selbst, es erhält vielmehr als Parameter<br />

eine Funktion ohne Namen<br />

(anonyme Funktion, Lambda-<br />

Funktion), die den eigentlichen<br />

Programmcode enthält.<br />

Abgesehen von der Tatsache,<br />

dass der von der anonymen Funktion<br />

umschlossene Code garantiert<br />

erst dann abläuft, wenn der<br />

Browser die Seite komplett aufgebaut<br />

hat, ändert sich nichts an<br />

dessen Funktionalität.<br />

Anonym und doch präsent<br />

Anonyme Funktionen gehören zu<br />

den unverzichtbaren Bestandteilen<br />

von Javascript. Event-Handler,<br />

die auf die Eingabe von Benutzern<br />

reagieren, funktionieren<br />

ohne sie nicht (siehe Listing 1,<br />

Zeile 22). „Funktion ohne Namen“<br />

ist hier ganz wörtlich zu<br />

verstehen: Nach dem Schlüsselwort<br />

function folgen gleich die Parameter<br />

in runden Klammern (im<br />

Beispiel leer, weil es keine Parameter<br />

gibt). Lambda-Funktion<br />

verhalten sich genau wie einfache<br />

Werte (Zahlen oder Strings): Sie<br />

dürfen sie einer Variablen zuweisen<br />

oder einer Funktion als Parameter<br />

übergeben.<br />

Die ersten zwei Zeilen der anonymen<br />

Funktion definieren Arrays,<br />

die mehrere Strings aufnehmen.<br />

Array[Index] greift auf den<br />

Inhalt zu. Als Schlüssel eines Arrays<br />

sind nur null sowie positive<br />

Ganzzahlen erlaubt. Container<br />

mit Strings als Schlüssel, auch als<br />

assoziative Arrays oder in Perl als<br />

Hashes bekannt, heißen in Javascript<br />

Objekt. Zum Definieren<br />

solcher Objekte kommt die<br />

JSON-Schreibweise zum Einsatz<br />

(„Javascript Object Notation“),<br />

die inzwischen auch viele andere<br />

Sprachen nutzen.<br />

In JSON umschließen geschweifte<br />

Klammern eine mit<br />

Komma separierte Liste von<br />

Schlüssel-Werte-Paaren (Listing<br />

1, Zeile 7). Der Zugriff erfolgt<br />

in der von Java bekannten<br />

Dot-Notation: Objekt.Attributname.<br />

26 11 | 12<br />

www.linux-user.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!