Basics Sprachkonstrukte I Javascript I Jan Backhaus 9.6.2005 / Vorlesung Web-Engineering Jan Backhaus Javascript I Basics Sprachkonstrukte I Gliederung 1 Basics Entwicklung und Geschichte Überblick Einbettung in HTML 2 Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Jan Backhaus Javascript I Basics Sprachkonstrukte I Entwicklung und Geschichte Überblick Einbettung in HTML Entwicklungsgeschichte Netscape entwickelte 1995 die erste Version LiveScript als Scriptsprache für ihren Browser Umbenennung zu JavaScript aus Marketinggründen Microsoft entwickelt halb-kompatibles JScript (1996) ECMA und Netscape entwickeln gemeinsam den Standard ECMAScript (kompatibel zu JavaScript) W3C gibt mit DOM ein Framework vor - JavaScript1.5 setzt dieses um (Ab IE 5.x und Netscape 6.x) Jan Backhaus Javascript I Basics Sprachkonstrukte I Entwicklung und Geschichte Überblick Einbettung in HTML Überblick Objektorientiere clientseitige Scriptsprache in Anlehnung zu Java Überwindet statische Strukturen des WWW wird zur Anwendung (DHTML) ) Website Starke Verbreitung im WWW Sicherheit wird durch Sandbox-Modell des Interpreters gewährleistet. Jan Backhaus Javascript I Basics Sprachkonstrukte I Entwicklung und Geschichte Überblick Einbettung in HTML In der HTML Datei index1.htm Wird beim Laden der Datei beim erreichen des jeweiligen Codes ausgeführt Jede Stelle ist möglich. Empfehlung: <head> Kommentarzeichen drumherum? <html> <head> <title>Test</title> <script type="text/javascript"> <!-alert("Hallo Welt!"); //--> </script> </head> <body> </body> </html> Jan Backhaus Javascript I Basics Sprachkonstrukte I Entwicklung und Geschichte Überblick Einbettung in HTML In HTML-Tags Aufruf durch Event-Handler Nur für kurzen Code geeignet Aufruf selbstgeschriebener Funktionen index2.htm <input type="button" name="frage" value="Weiter?" onClick="alert(’Okay!’)"> <a href="javascript:alert(’Geht!’)"> Geht das auch mit hyperlinks? </a> Jan Backhaus Javascript I Basics Sprachkonstrukte I Entwicklung und Geschichte Überblick Einbettung in HTML Externe Datei index3.htm Dateiendung .js Reine ASCII-Datei die nur JavaScript Code enthält <script src="answer.js" type="text/javascript"> </script> Alles was zwischen den script-Tags steht wird ignoriert answer.js Bei MIME Problemen var i = 2; mit dem Webserver u.u : i = -i + ++i + ++i * ++i + ++i + ++i + ++i; application/x-javascript document.write("Ergebnis " + i); Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Sprachbeschreibung JavaScript ist engverwandt mit Java (aber nicht identisch) Die Syntax von Java ist von C(++) abgeleitet ) Das erlernen von JavaScript ist für C-Programmierer eine einfache Transferleistung Dieser Vortrag behandelt nur unbekannte/ungewohnte Konstrukte ausführlich Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Hinweise Jeder Browser ist anders ! Testen des Scripts Muss es wirklich dynamisch sein (nicht jeder aktiviert JavaScript) Nicht alles was getan werden kann, sollte auch unbedingt getan werden. Beispiele: x x x x window.resize() window.open() document.onmousedown() alert() Solche Konstruktionen sind oft unhöflich Eine Ausnahme ist mein Vortrag ;-) Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Variablendeklarationen Variablentypen werden automatisch bestimmt JavaScript ist nicht streng typisiert Variablendeklaration kann an beliebiger Stelle im Code erfolgen Variablen gelten per default nur im aktuellen Block (Funktion, Schleife usw.) Benennungsregeln wie in Java / C Alle Bezeichner in JavaScript sind Case-Sensitive ) Vorsicht vor Schreibfehlern Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Beispiele Variablendeklaration var var var var var var i; x,y; zahl = 2; zahlstring = "40"; ergebnis = zahl + parseInt(zahlstring); text="Antwort auf die Frage "; text+= "nach dem Leben dem Universum "; text+= "und dem ganzen Rest: "; text+= ergebnis; Numerisch String ! String : Automatisch ! Numerisch : parseInt / parseFloat Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Kontrollstrukturen Es existieren die bekannten Kontrollstrukturen if-else case-switch while-do / do-while for Sie verhalten sich so, wie aus Java / C bekannt Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Bedingte Ausführung Beispiel für if-Struktur var passwort = "geheim"; var eingabe = window.prompt("Bitte geben Sie " + "das Passwort ein", ""); if (eingabe != passwort) { alert("Falsch!"); } else document.location.href = "richtig.htm"; Der Konditionaloperator (a?b:c) existiert auch Anmerkungen zu case-switch Nur Vergleich (==) möglich Statement muss mit break abgeschlossen werden Erst ab Java 1.2 (Fehlermeldung bei älteren Browsern) Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Bedingte Ausführung Beispiel für for-Schleife var x,y,i; document.write(’<table border="1"><tr>’); document.write(’<td>Wert<\/td>’); document.write(’<td>Wert<sup>2<\/sup><\/td>’); for (i=1; i <= 10; ++i) { x = i * i; y = i * i * i; document.write("<tr><td>" + i + "<\/td>"); document.write("<td>" + x + "<\/td><\/tr>"); } document.write("<\/table>"); Jan Backhaus Javascript I Basics Sprachkonstrukte I Allgemeines Werte und Variablen Kontrollstrukturen Fertig Danke für die Aufmerksamkeit Jan Backhaus Javascript I