JavaScript
Alexander zu Solms
Geschichte JavaScript
- 1995 von Netscape eingeführt und lizenziert
- JavaScript versteht sich als Ergänzung zu HTML
- JavaScript ist eine so genannte Clientseitige Skriptsprache
- Aus Sicherheitsgründen kann man mit JavaScript z.B. keine Ordner und Verzeichnisse auf dem PC anlegen, ändern oder löschen
- Man kann JavaScript bei den Browsern deaktivieren (standardmäßig aktiviert)
- JavaScript wird im Internet leider sehr häufig mißbraucht
- Microsoft führte einige Jahre später ein modifiziertes JavaScript mit dem Namen JScript ein
- Mit JScript kann man auf Dateisysteme und Betriebssysteme von außen zugreifen
- Im Oktober 1998 offizielle Einführung des Document Object Model (DOM)
JavaScript einsetzen
- JavaScript wird in HTML-Dateien eingebettet (optimal im head Bereich)
- Schreiben Sie alle JavaScript Befehle klein
- Jede JavaScript Anweisung endet mit einem Semikolon
<script type="text/javascript">
<!--
//hier folgt der JavaScript Code (einzeiliger Kommentar)
/*hier folgt der JavaScript Code (mehrzeiliger Kommentar)*/
//-->
</script>
Ist JavaScript aktiviert?
- Browser, die kein JavaScript aktiviert haben, ignorieren den Inhalt von <script> ... </script>-Bereichen
- Browser mit deaktiviertem JavaScript stellen aber den Inhalt von <noscript> ... </noscript>- Bereichen dar
- Umgekehrt führen Browser mit eingeschaltetem JavaScript die JavaScript-Befehle im <script>- Bereich aus
- Browser mit aktiviertem JavaScript ignorieren aber den Inhalt von <noscript>-Bereichen
Fügen Sie Daten in eine Webseite ein
-
document.write("Unser erster Text");
-
Das Objekt document stellt die darzustellende Webseite dar
-
Die Methode write() zeigt den Text innerhalb der Webseite an
-
Mit Hilfe von Methoden können Objekte Aktionen ausführen
-
Methoden werden immer mit einem Punkt unmittelbar an das Objekt gehängt
-
Der Ausgabetext steht in runden Klammern eingeschlossen in ""
-
(X)HTML Tags werden in die write Methode in die "" geschrieben
Das Document Object Model
Browsertypen mit JavaScript ermitteln
- document.write("Ihr Browser: " + navigator.appName)
- Ergebnis im Firefox-Browser: Ihr Browser: Netscape
- Das Objekt navigator repräsentiert den Browser, indem die Webseite geladen ist
- Die Eigenschaft appName ermittelt den Browsertyp
- Mit dem + Zeichen verknüpfen Sie String Variablen
- Ein Leerzeichen können Sie mit " " einfügen
- Die Eigenschaft appVersion ermittelt die Browserversion
Browserversion in einem Dialogfeld ausgeben
window.alert("Ihr Browser: " + navigator.appName + " " + navigator.appVersion);
- Die Methode alert() des Objekts window zeigt ein Dialogfenster an
Variablen in JavaScript
- Eine Variable ist ein Speicherbereich, dem Sie einen bestimmten Wert zuweisen können
var vorname = "Alexander";
document.write(vorname);
- Eine Variable besteht aus einem frei wählbaren Namen mit vorgestelltem Schlüsselwort var
- Ein gültiger Variablen-Name beginnt mit einem Buchstaben oder einem Unterstrich, gefolgt von einer beliebigen Anzahl von Buchstaben, Zahlen oder Unterstrichen
- Er darf keine Leerzeichen oder nicht alphanumerische Zeichen enthalten
- JavaScript unterscheidet bei Groß- und Kleinschreibung
- Sie können mehrere Variablen auf einmal definieren, dazu trennen Sie die Variablennamen durch ein Komma wie: var vorname, nachname;
Ein modales Dialogfenster
- Ein Dialogfenster mit zwei Schaltflächen (OK und Abbrechen)
- Die Methode confirm() ist an das Objekt window gekoppelt
- Die Methode confirm() liefert auf jeden Fall einen Rückgabewert
- Bei OK gibt es den Wert true und bei Abbrechen den Wert false zurück
- window.confirm("Meldung");
Ein modales Dialogfenster mit Eingabeaufforderung
- Das prompt Dialogfenster fordert den Besucher zu einer Eingabe auf
- Die Methode prompt() ist an das Objekt window gekoppelt
- window.prompt("Eingabeaufforderung", "Vorgabe");
- Die Methode prompt() besitzt zwei optionale Argumente
- Das erste Argument steht für den erklärenden Text, das zweite ist der gewünschte Text in dem Eingabefeld
Funktionen
- Eine Funktion ist ein Stück zusammengehörender Code, der es erlaubt, eine bestimmte Aufgabe in
wiederverwendbarer Art umzusetzen
- Funktionen werden durch das Schlüsselwort function eingeleitet
- Nach dem Schlüsselwort folgt der Name der Funktion
- Benötigt die Funktion Argumente, schreiben wir die Parameter in die runden Klammern
- Die Parameter werden durch Kommas getrennt
- Auch wenn keine Argumente nötig sind, müssen die runden Klammern geschrieben werden
- Die Anweisungen stehen in geschweiften Klammern
- Aufgerufen werden die Funktionen mit ihrem Namen und den optionalen Argumenten in den runden Klammern
Eine Funktion ohne Argumente
function my_hello()
{
document.write("<h1>Hallo Macromedia</h1><br />");
}
my_hello();
Eine Funktion mit Argumenten
function my_style(my_js)
{
document.write(my_js + "<br />")
}
my_style("ich bin ein Webmaster");
my_style("ich lerne JavaScript");
Eine Funktion mit Argumenten und Rückgabewert
function mwst(betrag)
{
var ergebnis = betrag * 0.16;
return ergebnis;
}
document.write(mwst("100"));
Arithmetische Operatoren
+ Addition - Subtraktion
* Multiplikation / Division
- Punktrechnung geht vor Strichrechnung
- Trennzeichen bei Dezimalzahlen ist der Punkt
Event-Handler
- Event-Handler sind ein Bindeglied zwischen HTML und JavaScript
- Sie werden meist in Form von Attributen in HTML-Tags notiert
- Event-Handler beginnen immer mit on, zum Beispiel onclick
- Hinter dem Gleichzeichen notieren Sie - in Anführungszeichen, eine JavaScript-Anweisung oder Funktion
- Der Event-Handler onclick steht für den Fall, dass der Anwender ein Element anklickt
- <a href="next.html" onclick="return confirm('Sorry noch nicht fertig, trotzdem weiter?')">Zu unseren Lotto Gewinnzahlen</a>
if Anweisung
if-Anweisungen führen den Code nur dann aus, wenn Bedingungen zutreffen
<script type="text/javascript">
test = "lernen";
if (test == "lernen")
{
document.write("Supi alles richtig.");
}
</script>
Der Vergleichsoperator == (zwei Gleichheitszeichen hintereinander!) vergleicht
die Variable test mit der Zeichenkette "lernen".
else Anweisung
Bei Verwendung der if Anweisung soll häufig ein alternativer Code
ausgeführt werden, wenn der geprüfte Ausdruck false ergibt. Dazu
fügen Sie an die if Bedingung else an, gefolgt von weiterem JavaScript Code.
if (Ausdruck)
{
// Aweisungen, die ausgeführt werden, wenn der Ausdruck wahr ist.
}
else
{
// Anweisungen, die in allen anderen Fällen ausgeführt werden.
}
Methoden der Klammersetzung
1. BSD-Stil - (Berkeley Software Distribution,
eine Version des UNIX-Betriebssystems)
if (Ausdruck)
{
// Code der ausgeführt wird, wenn Ausdruck wahr ist.
}
2. GNU-Stil - (GNU's Not Unix) freies Betriebssystem
if (Ausdruck)
{
// Code der ausgeführt wird, wenn Ausdruck wahr ist.
}
3. K&R-Stil (kommt aus der C Programmierung)
if (Ausdruck) {
// Code der ausgeführt wird, wenn Ausdruck wahr ist.
}
Vergleichs-Operatoren
Vergleichs-Operatoren erlauben es - wie der Name schon sagt - zwei Werte zu
vergleichen.
Beispiel Name Ergebnis
a == b Gleich TRUE wenn a gleich b
a != b Ungleich TRUE wenn a nicht gleich b
a < b Kleiner Als TRUE wenn a kleiner als b
a > b Größer Als TRUE wenn a größer als b
a <= b Kleiner Gleich TRUE wenn a kleiner oder gleich b
a >= b Größer Gleich TRUE wenn a größer oder gleich b
Logische Operatoren
Logische Operatoren verknüpfen verschiedene Werte
Beispiel Name Ergebnis
a && b Und TRUE wenn a als auch b TRUE ist
a || b Oder TRUE wenn a oder b TRUE ist
Formularfelder überprüfen
- Klickt der Besucher auf den Submit Button, so soll mit JavaScript direkt eine Überprüfung der Felder stattfinden
- Formulare werden im Arrays gespeichert. Das erste Formular wird mit document.forms[0] angesprochen
- Mit document.forms[0].email.value == "" ermitteln wir ob ein Textfeld mit Namen email leer ist
- Die Funktion focus() setzt den Fokus in das gewünschte Feld
- Mit dem Eventhandler onsubmit in dem (X)HTML Element form rufen wir JavaScript Funktionen auf
- Beim Klick auf die Submit-Schaltfläche wird standardmässig true übergeben
Datentypen in JavaScript
Datentyp Beispiel document.write();
number var a = 42; typeof a
boolean var b = true; typeof b
string var c = "Brief"; typeof c
undefined var d; typeof d
object var e = new Date(); typeof e
Mit dem Operator typeof() kann der Datentyp angezeigt werden
Mit der Funktion Number() lässt sich z.B. ein string in einen number umwandeln
Mehrfachauswertungen mit Switch
Wenn Sie mehrere aufeinander folgende Bedingungen gegen ein und dieselbe
Variable testen möchten, ist der if-Befehl sehr aufwändig. Mit switch steht ein
Befehl zur Verfügung, der solche Listen eleganter aufbaut.
switch (Ausdruck)
{
case wert1:
//wenn Ausdruck = wert1 wird dieser Code ausgeführt
break ; //break beendet die switch Anweisung
case wert2:
//wenn Ausdruck = wert2
break;
default:
//wenn keiner von beiden Werten zutrifft,
//wird dieser Code ausgeführt
}
Identifizierung Über einen Browser
- Die Bildschirmauflösung kann über screen.height ermittelt werden
- Die Anzahl der Farben kann über screen.colorDepth ermittelt werden
- Installierte Plugins können über navigator.plugins ermittelt werden
Arrays
- Ein Array kann Hunderte von Werten speichern, ohne daß jedes Mal eine neue Variable definiert werden muß
- new Array() setzen Sie ein, wenn Sie einer Variablen gleichzeitig mehrere Werte zuweisen wollen
- Wir definieren das Array vorname und weisen ihm vier Zeichenketten zu
var vorname=new Array("alex", "paul", "gerd", "hugo");
document.write(vorname[0]); //ergibt alex
document.write(vorname[1]); //ergibt paul
document.write(vorname[2]); //ergibt gerd
document.write(vorname[3]); //ergibt hugo
- Mit dem Indexwert 2 greifen wir auf das dritte Element in vorname zu
- Der Indexwert wird direkt hinter dem Arraynamen in eckige Klammern gesetzt
- Wichtig: die Indizierung eines Arrays beginnt bei Null!
Schleifen
- Schleifen benätigen Sie, um Programm-Abschnitte mehrfach durchlaufen zu lassen
- Die häufigste Schleifenart ist die while-Schleife, die in fast allen Programmiersprachen vorkommt
- Die Bedingung wird mit jedem Eintritt in die Schleife getestet
- Solange der Ausdruck True zurückgibt, wird die Schleife durchlaufen
- Sollte der Ausdruck schon beim Eintritt in die Schleife False ergeben, wird die Schleife nicht durchlaufen
while (Bedingung)
{
Schleifeninhalt
}
Die while() Schleife
var counter=0;
var zahl=6;
while (zahl > counter)
{
document.write("Counter hat den Wert: " + counter "<br />";
counter++;
}
- Die Schleife in unserem Beispiel bricht ab, wenn counter gleich 6 ist
- Mit document.write() wird die Variable counter ausgegeben
- Abschließend wird die Variable counter immer um 1 erhöht, solange die Bedingung zutreffend ist
- Um Fehlerquellen einzudämmen, werden Variablen immer außerhalb der Schleifen initialisiert
Der Break Befehl
- Gerade Entwickler, die noch nicht so häufig mit Schleifen gearbeitet haben, programmieren oft versehentlich Endlosschleifen
- Mit der break Anweisung wird die Schleife verlassen
- if (Bedingung) break;
do-while
- Bei reinen while Schleifen kann es passieren, daß durch die Bedingung am Anfang die Schleife nie durchlaufen wird
- Oftmals ist es aber notwendig, den Inhalt des Blocks für die weitere Programmfortsetzung mindestens einmal zu durchlaufen
- Durch die do..while Schleife ändern wir die Reihenfolge der Abarbeitung
- Zuerst wird die Schleife einmal durchlaufen und am Ende die optionale Abbruchbedingung getestet
var counter=7, zahl=6;
do
{
document.write ("Counter ist: " + counter + "<br />");
counter++;
if (counter==50) break
} while (zahl < counter);
for() Schleife
- Die for() Schleife ist eine Zählschleife
for (<Startanweisung>; <Bedingung>; <Schleifenanweisung>)
{
<Schleifeninhalt>
}
- Zuerst wird die Startanweisung ausgeführt
- Dann, falls Bedingung erfüllt ist, die Schleifenanweisung
- Danach wird der Schleifeninhalt ausgeführt
- Jetzt wird jedesmal überprüft ob die Bedingung noch wahr ist
- Die Schleifenanweisung wird angepasst
- Solange bis die Bedingung nicht mehr wahr ist
Die JavaScript Eigenschaft length
- length speichert die Anzahl HTML-Tags einer HTML-Datei
- Tags, die aus einem einleitenden und einem abschließenden Tag bestehen, werden als ein Tag gezählt
- alert("Diese Datei hat " + document.all.length + " HTML-Tags");
Wechseln der Tabellenzeilen-Farbe
- Mit JavaScript Eventhandlern können Sie Besuchern Ihrer Webseite für Tabellen eine Art Lesehilfe präsentieren
- Führt der Besucher mit der Maus über die Tabelle, wechselt die Farbe der Tabellenzeile
- <tr bgColor="#FFFFFF" onmouseover="this.bgColor='#AAAAFF'" onmouseout="this.bgColor='#FFFFFF'">
- Die Hintergrundfarbe der Zeile ist weiß
- Geht der Besucher über die Tabellenzeile verändert sich die Farbe durch onmouseover
- Verläßt die Maus die Tabellenzeile onmouseout wird die Farbe wieder weiß
- this nimmt einfach auf das aktuelle Objekt Bezug - in unserem Falle die Tabellenzeile tr und bgColor
Mit einer Grafik Daten übertragen
- Oft wird der Submit Button wegen der besseren Grafik durch ein Image ersetzt
- <input type="image" name="submit" src="button.gif"
- Mit dem Eventhandler onclick in dem input Element kann man JavaScript aufrufen
- Oder im form Element über onsubmit
JavaScript extern aufrufen
- JavaScript kann extern in einer Datei gespeichert werden
- Vorteilhaft ist die strikte Trennung von JavaScript und (X)HTML
- Der JavaScript Code kann von allen Webseiten implementiert werden
- <script type="text/javascript" src="meine_datei.js"></script>
- Die externe Datei enthält keine einleitenden (X)HTML Tags für JavaScript
- Dei Dateiendung ist üblicherweise .js
Position eines Zeichens ermitteln
- Die Methode indexOf ermittelt das erste Vorkommen eines Zeichens innerhalb einer Zeichenkette
- Zurückgegeben wird, an wie vielter Stelle das Zeichen in der Zeichenkette steht
- Die Zählung beginnt bei Null
- Wenn die Suche erfolglos ist, wird -1 zurückgegeben
- var my_text = "Webmaster";
- var my_result = my_text(indexOf("b");
- alert("gefunden bei Position: " + my_result); => 2
Das aktuelle Tagesdatum
- liefert das Objekt Date()
- Instanzieren Sie ein neues Objekt Date
- var datum = new Date();
- Mit der Methode toLocaleString() konvertieren Sie einen Zeitpunkt in lokales ein Format um
- getDate() (Monatstag ermitteln)
- getMonth() (Monat ermitteln)
- getFullYear() (volles Jahr ermitteln)