Grundlagen JavaScript
Transcrição
Grundlagen JavaScript
JavaScript ist eine clientseitige und meist in HTML eingebettete Skriptsprache, die zur Entwicklung dynamischer Webinhalte geschaffen wurde. Verfasser: Martin Hüsler Modul: "Internet und XML" Fachhochschule Nordwestschweiz FHNW November 2012 Inhaltsverzeichnis 1. Einleitung ............................................................................................................... 3 1.1 JavaScript in HTML einbauen .......................................................................... 3 1.2 Externe JavaScript-Dateien ............................................................................. 3 1.3 JavaScript-Links ............................................................................................... 3 1.4 Browser ohne JavaScript ................................................................................. 4 1.5 Client- oder serverseitig ................................................................................... 4 2. Die Textausgabe ................................................................................................... 4 2.1 alert-Ausgabe ................................................................................................... 4 2.2 document.write-Ausgabe ................................................................................. 5 3. Benutzereingaben ................................................................................................. 5 3.1 prompt-Methode ............................................................................................... 5 3.2 confirm-Methode .............................................................................................. 5 4. Kommentare einfügen ........................................................................................... 5 5. Variablen ............................................................................................................... 6 6. Operatoren ............................................................................................................ 6 7. Stringoperationen .................................................................................................. 7 7.1 Mit dem "Plus-Operator" Strings verbinden...................................................... 7 7.2 length - Längenbestimmung............................................................................ 7 7.3 charAt(x) - Zeichen der Position x .................................................................... 7 7.4 substring(start, ende) - Teilstring ..................................................................... 7 8. Arrays (Datenfelder) .............................................................................................. 8 9. Verzweigung .......................................................................................................... 8 9.1 Die if/else-Anweisung....................................................................................... 8 9.2 Die switch-Anweisung ...................................................................................... 9 10. Schleifen .............................................................................................................. 9 10.1 Die for-Schleife .............................................................................................. 9 10.2 Die while-Schleife......................................................................................... 10 10.3 Die do-while-Schleife ................................................................................... 10 11. Datum / Zeit ....................................................................................................... 10 12. DOM (Document Object Model) ........................................................................ 12 12.1 Baumstruktur................................................................................................ 12 12.2 Zugriff auf einzelne Elemente ...................................................................... 12 13. Event-Handler.................................................................................................... 13 14. Formulare überprüfen ........................................................................................ 14 15. ANHANG ........................................................................................................... 15 15.1 Funktionen ................................................................................................... 15 15.2 Webadressen ............................................................................................... 15 Fachhochschule Nordwestschweiz FHNW 2 November 2012 1. Einleitung JavaScript wurde ursprünglich von Netscape entwickelt und ist eine clientseitige Programmiersprache. Der JavaScript-Code wird vom Browser ausgeführt. Ihr Code kann im Head-Bereich (Funktionen) eines HTML-Dokuments stehen, im Body-Bereich oder auch in einer externen Datei. 1.1 JavaScript in HTML einbauen Mit dem script-Tag wird der JavaScript-Bereich eingeleitet. Für ganz alte Browser, welche JavaScript nicht verstehen, folgt nach dem script-Tag ein HTML-Kommentar. Damit JavaScript das "-->" nicht auszuführen sucht, wird diese Zeile für JavaScript auskommentiert. <html> <head> <title> JavaScript-Test </title> </head> <body> <script type="text/javascript"> <!-document.write("Guten Tag"); //--> </script> </body> </html> Sie werden in Scriptarchiven auch den Tag <script language="JavaScript"> sehen. Seit HTML 4.0 sollte aber das Attribut "type" verwendet werden. 1.2 Externe JavaScript-Dateien Wenn Sie JavaScript-Funktionen in eine externe Datei ablegen wollen, verwenden Sie die Endung "js" z.B. prog.js. Wenn Sie nun einen Dateiordner mit dem Namen "scripte" erstellt haben, könnte wie folgt darauf zugegriffen werden: <body> <script type="text/javascript" src="scripte/prog.js> </script> </body> 1.3 JavaScript-Links HTML-Links können auf unterschiedliche URLs verweisen. Zum Beispiel kann auf "http:" oder auf "mailto:" verwiesen werden. Genauso kann nun auch auf "javascript:" verlinkt werden. Beispiel: <a href="javascript:window.alert('Hallo');">Klick</a> Fachhochschule Nordwestschweiz FHNW 3 November 2012 1.4 Browser ohne JavaScript Falls JavaScript in einem Browser deaktiviert ist oder der alte Browser kein JavaScript versteht, kann mit dem Tag <noscript> gearbeitet werden. <noscript> Sie haben JavaScript deaktiviert <br> <A HREF="http://www.fhnw.ch/ohnejs"> Klicken Sie hier </noscript> 1.5 Client- oder serverseitig Es gibt neben den "clientseitigen" Skriptsprachen wie JavaScript und Java auch "serverseitige" Skriptsprachen wie zum Beispiel PHP oder Perl. Bei JavaScript wird der gesamte Quellcode zum Webbrowser (Client) gesandt und erst dort interpretiert und umgesetzt. Webserver: Client: Webbrowser URL-Anfrage Serverprogramm (z.B. Apache) HTML + JavaScript Interpretation und Umsetzung von HTML und JavaScript! HTML JavaScript Schematische Darstellung Client-Server-Beziehung 2. Die Textausgabe 2.1 alert-Ausgabe In JavaScirpt lässt sich ganz einfach ein neues Fenster mit einer Textausgabe öffnen. window.alert("Guten Tag miteinander"); Weil window das Standard-Objekt ist, kann dieses auch wegelassen werden. alert("Guten Tag miteinander"); Fachhochschule Nordwestschweiz FHNW 4 November 2012 2.2 document.write-Ausgabe Statt ein neues Fenster zu öffnen, will man oft direkt in ein vorhandenes Dokument (oft aktuelle Webseite) schreiben. Dazu gibt es folgenden Befehl: window.document.write("<b>Guten Tag miteinander</b>"); Wiederum kann das Wort window weggelassen werden. 3. Benutzereingaben 3.1 prompt-Methode Mit dem Befehl window.prompt() erhalten Sie ein einzeiliges Texteingabefeld. Der Rückgabewert dieser Methode ist der eingegebene Text, sofern der Anwender auf OK klickt. 3.2 confirm-Methode Mit der Methode window.confirm() können Sie eine Sicherheitsabfrage starten. Wollen Sie Ihren Namen wirklich eintragen? Diese Methode liefert die Antwort true oder false. 4. Kommentare einfügen Bei JavaScript gibt es 2 Arten von Kommentaren. // Einzeiliger Kommentar /* Das ist nun ein Mehrzeilenkommentar, wobei dieser auch mit Hilfe des obigen Zeichens realisiert werden könnte indem einfach z.B. vor jede Zeile ein "//" gesetzt wird. */ Den HTML-Kommentar benötigen wir in JavaScript um alte Browser zu schützen: <!-wird von HTML übersprungen //--> Fachhochschule Nordwestschweiz FHNW 5 November 2012 5. Variablen Variablen sind in javascript sehr einfach zu verwenden. Mit dem Schlüsselwort var deklarieren Sie eine Variable. Variablen: - bestehen aus Buchstaben, Zahlen und dem "_" - dürfen nicht mit einer Zahl beginnen - es wird zwischen Gross- und Kleinschreibung unterschieden - keine Sorge zu Datentypen - JavaScript wandelt je nach Daten in den jeweils erforderlichen Datentyp um (boolean, number, string, undefined) var KlassenGroesse = 24; // Nach 3 Monaten KlassenGroesse = 21; var Meintext = "Das haben Sie gut gemacht"; Meintext = "Das haben Sie sehr gut gemacht"; 6. Operatoren Arithmetische Operatoren in JavaScript: Operator: + * / % - Aktion: Addition Subtraktion Multiplikation Division Modulo Negation Beispiel: a=10 + 5 a=10 - 5 a=5 * 10 a=15 / 3 a=16 / 3 b=7 a= -b Ergebnis: 15 5 50 5 1 -7 Modulo ermittelt den Rest einer Division! Vergleichs-Operatoren in JavaScript: Operator: == != > < >= <= Fachhochschule Nordwestschweiz FHNW Bedeutung: gleich ungleich grösser als kleiner als grösser als oder gleich kleiner als oder gleich 6 November 2012 Boolsche Operatoren in JavaScript: Mit den boolschen Operatoren können Wahrheitswerte miteinander verknüpft werden (true / false). Es gibt die Verknüpfungen: - UND Operator: && - ODER Operator: || - NEGATION Operator: ! 7. Stringoperationen 7.1 Mit dem "Plus-Operator" Strings verbinden Zeichenketten können mit dem "+"-Zeichen verknüpft werden. var Text1 = "Guten"; var Text2 = "Tag"; var MeinText = Text1 + " " + Text2 + " zusammen"; //MeinText == "Guten Tag zusammen" 7.2 length - Längenbestimmung Mit Text.length kann die Anzahl der Zeichen innerhalb eines Strings festgestellt werden. Beispiel: var Text = "Guten Tag"; var Anz_Zeichen = Text.length; //Anz_Zeichen == "24" 7.3 charAt(x) - Zeichen der Position x Text.charAt(3) lieferte das 4. Zeichen der Stringkette. Die Zählung beginnt also bei 0. Beispiel: var Text = "Guten Tag"; var Viertes_Zeichen = Text.charAt(3); //Viertes_Zeichen == "e" 7.4 substring(start, ende) - Teilstring Mit Text.substring(0,4) können Sie Teile eines Strings in eine neue Variable schreiben. Beispiel: var Teil_Text = Text.substring(0,4); Fachhochschule Nordwestschweiz FHNW 7 //Teil_Text == "Guten" November 2012 8. Arrays (Datenfelder) Arrays sind Datenfelder, die mehrere Werte speichern können. Auf einen einzelnen Inhalt greift man über den Index zu. Definition eines Arrays: var a = new Array(); a[0] = "Januar"; a[1] = "Februar"; // usw. Sie können das Array bei der Deklaration auch direkt abfüllen: var a = new Array("Januar", "Februar", "März"); Kurzform: var a = ["Januar", "Februar", "März"]; Auslesen: document.write(a[1]); 9. Verzweigung 9.1 Die if/else-Anweisung Verzweigungen werden wie in vielen Programmiersprachen mit der if/else Anweisung gelöst. Beispiel: if (Wert1 > Wert2) { document.write ("Der Wert der Variable Wert1 war grösser"); return } else { document.write ("Der Wert der Variable Wert2 war grösser"); } Kurzform: ergebnis = (Wert1 > Wert2) ? true-Wert : false-Wert Fachhochschule Nordwestschweiz FHNW 8 November 2012 9.2 Die switch-Anweisung switch (name) { case "ludwig": document.write("Das ist heute ein seltener Name!"); break; case "martin": document.write("Das ist aber ein schöner Name!"); break; default: document.write("Sie können ja nichts dafür, dass Sie so heissen!"); break; } Die letzte Anweisung (default) ist optional. Hingegen soll man auch im letzten Fall (case) die Anweisungen mit einem break abbrechen. 10. Schleifen 10.1 Die for-Schleife In der for-Schleife wird die Bedingung, wie oft die Schleife durchlaufen werden soll, vor dem Schleifenstart definiert. Sie müssen also nicht mehr innerhalb der Schleife einen Zähler hochaddieren. Beispiel: for (var zahl=1; zahl<=20; zahl++) { document.write("Dies ist der <B>"+ zahl +".</B> Durchlauf dieser Schleife. <BR>"); } Das Kernstück der for-Schleife sind die drei durch ein Semikolon getrennten Anweisungen in Klammern. Es sind die Initialisierung, Bedingung und Veränderung. Fachhochschule Nordwestschweiz FHNW 9 November 2012 10.2 Die while-Schleife Die einfachste Form einer Schleife ist die while-Schleife. While ist das englische Wort für "während" oder "solange". Solange also eine bestimmte Abbruchbedingung nicht erfüllt ist, wird diese Schleife durchlaufen. Es ist möglich, dass diese Art von Schleife nie durchlaufen wird. Beispiel: Zaehler = 1; Ende = 20; while (Zaehler < Ende) { document.write("Der Wert von Zaehler ist: <b>" + Zaehler + "</b><BR>"); Zaehler++; } 10.3 Die do-while-Schleife Im Gegensatz zur while-Schleife wird die do-while-Schleife immer mindestens einmal durchlaufen. Beispiel: var Zaehler = 1; var Ende = 20; do { document.write("Der Wert von Zaehler ist " + Zaehler + "<BR>"); Zaehler++; } while (Zaehler < Ende) 11. Datum / Zeit JavaScript wird häufig dazu gebraucht um Datumsinformationen auszugeben. Dafür gibt es das Objekt "Date". Vom Date-Objekt ist zuerst mal eine Instanz zu erzeugen. var zeit= new Date(); Fachhochschule Nordwestschweiz FHNW 10 November 2012 Die Variable Zeit enthält jetzt das aktuelle Datum inkl. Uhrzeit des loklen Rechners. Diese Information kann nun mit Methoden einzelnen Variablen zugeordnet werden: Methoden: getDate() getMonth() getYear() getHours() getMinutes() getSeconds() getMilliseconds() Ausgabe mit Formatbeispiel: Tag des Monats: 1-31 Monat: 0-11 Jahr: siehe unten Stunde: 0-23 Minuten: 00-59 Sekunden: 00-59 Millisekunden: 0-999 Beispiele: var zeit = new Date(); var var var var var Tag = zeit.getDate(); Monat = zeit.getMonth(); Jahr = zeit.getYear(); Stunde = zeit.getHours(); Minute = zeit.getMinutes(); Monat = Monat + 1; document.write("Heute ist der "+ Tag + "."+ Monat +"."+Jahr+"<br>"); document.write("Es ist jetzt " + Stunde + ":" + Minute + " Uhr"); Es gibt noch die Funktion getTime(), die die Zeit seit dem 1.1.1970 zurück gibt. Diese Funktion eignet sich um eine Differenz zwischen zwei Daten zu errechnen. In neusten Browserversionen gibt es getFullYear(), das grundsätzlich die volle Jahrzahl wiedergibt. Das lokale Datumsformat kann mit der Funktion toLocalString(), ausgegeben werden. Fachhochschule Nordwestschweiz FHNW 11 November 2012 12. DOM (Document Object Model) Das "Document Object Model" spezifiziert, wie man auf die Elemente eines HTMLDokuments zugreifen kann. Es interpretiert ein HTML-Dokument als eine Baumstruktur mit einzelnen Knotenobjekten. Mit der Methode "getElementById()" können HTML-Elemente über das Attribut id dynamisch angepasst werden. DOM wurde vom W3C verabschiedet und sollte deshalb von allen Browser gleich unterstützt werden. 12.1 Baumstruktur html Elternelement von p head body h1 p Kindelement von body Das DOM stellt eine Reihe von Objekten mit Eigenschaften (Attributen) und Methoden (Operationen) zur Verfügung. Ein untergeordnetes Objekt erbt alle Eigenschaften und Methoden des Elternobjekts. window document forms[] elements[] Ausschnitt aus der Objekthierarchie DOM images[] navigator 12.2 Zugriff auf einzelne Elemente Für die meisten HTML-Elemente kann das Universalattribut id definiert werden. Beispiel: <body id="alles"> <h3 id="ueberschrift"> DOM-Demo </h3> <img src="bild.jpg" id="bild1" /> </body> So wird darauf zugegriffen: document.getElementById("alles") var obj = document.getElementById("bild1"); obj.src = "bild2.jpg"; Fachhochschule Nordwestschweiz FHNW 12 November 2012 13. Event-Handler Mit Event-Handlern kann JavaScript auf Ereignisse reagieren. Für das Objekt window stehen onload und onunload zur Verfügung. Für Elemente werden häufig onclick und onmouseover mit dem Gegenstück onmouseout verwendet. Mit onmouseover und onmouseout kann der bekannte Rollover-Effekt realisiert werden. Laut W3C gehören Event-Handler zum HTML-Sprachstandard, werden aber im Allgemeinen in Zusammenhang mit JavaScript verwendet, da der Aufruf eines EventHandlers fast immer JavaScript-Anweisungen aktiviert. Beispiel im "head": <script type="text/javascript"> <!-function quadratberech(x) { var zahl; zahl = x*x; alert("Das Quadrat von " + x + " ist " + zahl); } // --> </script> Beispiel im "body": <form name="quadrat"> <p> Bitte geben Sie eine Zahl ein.</p> <input type="text" id="eingabe"> <input type="button" value="Quadrat berechnen" onclick="quadratberech(document.quadrat.eingabe.value)"> </form> onload onunload onclick ondblclick onmouseover onmouseout onmousedown onmouseup Wird aufgerufen, wenn… … das Dokument vollständig geladen ist. … der Browser das aktuelle Dokument verlässt. … der Benutzer auf das Element klickt. … der Benutzer auf das Element doppelklickt. … sich die Maus über einem Element befindet. … sich die Maus von einem Element wegbewegt. … der Benutzer die Maustaste drückt. … der Benutzer die Maustaste wieder loslässt. Beachten Sie unter de.selfhtml.org, welche weiteren Event-Handler noch eingesetzt werden können. z.B. onabort, onblur, onchange, onerror, onfocus, onkeydown, onkeypress, onkeyup, onmousemove, onreset, onsubmit Fachhochschule Nordwestschweiz FHNW 13 November 2012 14. Formulare überprüfen Alle Formulare werden in einem Array document.forms[ ] gespeichert. Auf dieses Array kann über den Array-Index zugegriffen werden, wobei die Formulare in der Reihenfolge im Array stehen, in der sie im HTML-Formular vorkommen. document.forms[0]: 1. Formular im Dokument document.forms[1]: 2. Formular im Dokument Alternativ kann man über den Namen (z.B. document.eingabe-form für ein Formular mit name="eingabe-form") zugreifen. Diese Variante hat den Vorteil, dass man zwischen vorhandene Formulare einer Webseite ein neues Formular einfach einfügen kann (Leider gibt dies bei einigen Browsern Probleme, weil nicht alle Versionen dem form -Tag das Attribut name erlauben). Ein Formular speichert all seine Elemente im Array elements. Auch hier kann man auf die einzelnen Elemente über den Array-Index zugreifen. Auf das erste Element im ersten Formular könnte man wie folgt zugreifen: document.forms[0].elements[0]: 1. Element im 1. Formular document.forms[0].elements[0].value: Mit ".value" kann auf den aktuellen Wert des Elementes zugegriffen werden. Alternativ kann man auch direkt über das name-Attribut des form-Tags und des Formularelements (z.B input type="text")zugreifen. document.forms[0].field1: Element mit name="field1" im 1. Formular Variablenzuweisung: var vorname = document.fragebogen.vorname.value; Die meisten Formularelemente haben eine Eigenschaft value, die in der Regel die Eingabe des Benutzers angibt. Diese Eigenschaft muss oft überprüft werden. Beispiel: if (document.fragebogen.vorname.value == "") { alert("Bitte Vornamen eintragen"); } Allgemeine Schreibweise um auf den Wert eines Formularelements zuzugreifen: document.forms[0].elements[0].value Fachhochschule Nordwestschweiz FHNW 14 November 2012 15. ANHANG 15.1 Funktionen Neben den Datums- und Zeitfunktionen gibt es noch viele weitere Funktionen, welche Sie im Web detailliert beschrieben finden. Beispiele: Math.round(zahl) Rundet auf ganze Zahl. Math.pow(Basis, Exponent) Berechnet die Potenz einer Zahl zu einer Basis. parseInt(zahl) Wandelt in eine ganzzahlige Zahl. parseFloat(zahl) Wandelt in eine Fliesskommazahl. isNaN(zahl) Stellt fest, ob ein Eingabewert keine Zahl ist. function istzahl(zahl) { if (!isNaN(zahl)) //Not-Operator return true; else return false; } 15.2 Webadressen http://de.selfhtml.org/javascript http://rhirte.de/javascript/home.htm http://www.dcljs.de http://www.html-seminar.de/javascript.htm http://www.de.hscripts.com/tutorials/javascript http://openbook.galileocomputing.de/javascript Fachhochschule Nordwestschweiz FHNW 15 November 2012