function FunktionsName(Parameter,...) { JavaScript-Anweisung; weitere JavaScript-Anweisungen... }
Beispiel
function BruttoBetrag(NettoBetrag, Prozentsatz) { var Ergebnis = NettoBetrag * (1 + (Prozentsatz / 100)); return Ergebnis; }Mit dem Schlüsselwort function leiten Sie die Definition einer Funktion ein. Dahinter folgt, durch ein Leerzeichen getrennt, ein frei wählbarer Funktionsname, im Beispiel: BruttoBetrag. Vergeben Sie einen Funktionsnamen, der das, was die Funktion leistet, ungefähr beschreibt. Der Name darf keine Leerzeichen und keine deutschen Umlaute enthalten. Als Sonderzeichen ist nur der Unterstrich "_" erlaubt. Der Name sollte nicht länger als 32 Zeichen sein. Achten Sie darauf, daß Sie als Funktionsnamen kein reserviertes Wort von JavaScript wählen. Groß- und Kleinschreibung werden unterschieden, d.h. beispiel und Beispiel sind nicht das Gleiche!
FunktionsName(Parameter,...)
Beispiel im Körper einer HTML-Datei
<script> <!-- var Endbetrag = BruttoBetrag(4700,15); document.write("DM 4700 + 15% MwSt. = " + Endbetrag + " DM"); //--> </script>Die Funktion rufen Sie mit ihrem Funktionsnamen auf. Dahinter folgt die öffnende Klammer. Wenn die Funktion keine Parameter erwartet, notieren Sie hinter der öffnenden gleich eine schließende Klammer. Wenn die Funktion Parameter erwartet, müssen Sie für jeden Parameter einen erlaubten Wert übergeben. Im Beispiel wird die zuvor definierte Funktion BruttoBetrag(...) aufgerufen. Diese Funktion erwartet als Parameter einen Nettobetrag und einen Prozentwert. Die beiden Parameter werden ihr übergeben (Nettobetrag 4700, Prozentsatz 15). Das von der Funktion zurückgegebene Ergebnis wird in der Variablen Endbetrag gespeichert. In der folgenden Anweisung wird mit Hilfe der JavaScript-Methode document.write(...) das Ergebnis zusammen mit einem sinnvollen Text auf den Bildschirm geschrieben.
Beispiel
function Quadrat(x) { return x * x; } function SchreibeQuadrate() { for (var i = 1; i < 101; i++) { var Wert = Quadrat(i); document.write("<br>Das Quadrat von " + i + " ist " + Wert); } }Im Beispiel werden zwei Funktionen definiert. Die erste Funktion Quadrat(...) erhält als Parameter einen Wert x. Aus diesem Wert errechnet die Funktion das Quadrat und gibt es zurück. Die Rückgabe erfolgt mit Hilfe des JavaScript Schlüsselwortes return. Die zweite Funktion SchreibeQuadrate() enthält eine Schleife, die von 1 bis 100 zählt. Innerhalb dieser Schleife wird bei jedem Durchgang die erste Funktion Quadrat mit dem aktuellen Stand des Schleifenzählers i aufgerufen. Das jeweilige Ergebnis wird in der Variablen Wert gespeichert. In der folgenden Anweisung wird mit Hilfe der JavaScript-Methode document.write(...) das Ergebnis zusammen mit einem sinnvollen Text am Bildschirm ausgegeben. Beachten Sie, daß innerhalb des Textes, der mit document.write ausgegeben wird, auch HTML-Tags vorkommen dürfen - im Beispiel das Tag <br> (Zeilenumbruch). Im Beispiel bewirkt dies, daß jedes der insgesamt 100 Ergebnisse in eine eigene Zeile geschrieben wird.
Aufruf einer Methode (Beispiel)
document.write("<center>Willkommen auf unseren Seiten!<br> Hier geht der Punk ab...</center>")Im Beispiel wird die Methode document.write aufgerufen. Dabei ist write eine Standardfunktion von JavaScript, die sich auf das JavaScript-Standardobjekt document bezieht. Zuerst wird der Objektname notiert, und dahinter, durch einen Punkt getrennt, der Funktionsname.
Mit document ist immer der Inhalt des gerade aktuellen Fensters des WWW-Browsers gemeint. Die Methode document.write schreibt einen beliebigen Text in das aktuell angezeigte Fenster. Als Parameter erwartet diese Methode eine Zeichenkette, die am Bildschirm ausgegeben werden soll. Der Text wird an der Stelle in das angezeigte Dokument eingefügt, an der der Methodenaufruf innerhalb der HTML-Datei steht.
Aufruf einer Funktion (Beispiel)
FarbwertRot = parseInt("51",16)Im Beispiel wird die JavaScript-Standardfunktion parseInt aufgerufen. Diese Funktion errechnet aus einer als Zeichenkette angegebenen Zahl und einer "Basis" einen numerischen Wert aufgrund der Basis. Im Beispiel wird die Zeichenkette "51" übergeben und als Basis 16 (das ist die Basis für Hexadezimalwerte, wie sie z.B. bei HTML-Farbdefinitionen benötigt wird.
Eine Übersicht von Methoden und Standardfunktionen in JavaScript finden Sie im Kapitel JavaScript-Kurzreferenz.
Komplettbeispiel einer HTML-Datei
<html> <head> <title>Beispiel mit JavaScript</title> <script language="JavaScript"> <!-- function Farbe(Farbwert_R, Farbwert_G, Farbwert_B) { this.Farbwert_R = Farbwert_R; this.Farbwert_G = Farbwert_G; this.Farbwert_B = Farbwert_B; } function TestObjekt() { Test = new Farbe("33","99","C0"); alert("Der Rotwert meiner Farbe ist Hexadezimal " + Test.Farbwert_R); } // --> </script> </head> <body onload="TestObjekt()"> </body> </html>Um ein neues Objekt und seine Eigenschaften anzulegen, müssen Sie innerhalb der HTML-Tags <script language=""JavaScript"< und </script> eine eigene Funktion definieren, die so aussieht wie im Beispiel die Funktion Farbe(...). Der Name, den Sie der Funktion geben (im Beispiel der Name Farbe) ist zugleich der Name des Objekts, das Sie mit dieser Funktion anlegen. Als Parameter, die die Funktion erwartet, notieren Sie die Eigenschaften, die Ihr Objekt haben soll. Die Parameternamen sind zugleich die Namen der Objekteigenschaften. Im Beispiel sind das die Eigenschaften Farbwert_R, Farbwert_G und Farbwert_B, denn es soll ein Objekt angelegt werden, das Rot-, Grün- und Blauwert einer Farbe speichern kann. Innerhalb der Funktion notieren Sie alle Anweisungen so wie im Beispiel: für jede Eigenschaft, die bei den Funktionsparametern festgelegt wurde, notieren Sie eine Anweisung, beginnend mit dem JavaScript-Schlüsselwort this, gefolgt von einem Punkt und dem Parameternamen. Dahinter notieren Sie ein Istgleichzeichen, und hinter dem Istgleichzeichen nochmals den Parameternamen. Am Ende jeder Anweisung muß ein Strichpunkt stehen.
Nachdem das Objekt angelegt ist, können Sie an anderen Stellen innerhalb Ihres JavaScripts Instanzen dieses Objekt definieren. Dies geschieht mit Hilfe einer Variablen und dem JavaScript-Schlüsselwort new. Im Beispiel wird zu Testzwecken eine zweite Funktion TestObjekt() definiert. Darin wird zunächst eine Variable Test angelegt. Diese Variable soll Daten des angelegten Objekts Farbe enthalten. Dies geschieht durch ein Istgleichzeichen hinter dem Variablennamen. Dahinter folgt das JavaScript-Schlüsselwort new und dahinter, durch ein Leerzeichen getrennt, der Name der Funktion, mit der das gleichnamige Objekt angelegt wurde, im Beispiel Farbe. Als Parameter werden dieser Funktion irgendwelche brauchbaren Werte übergeben, im Beispiel "33", "99" und "C0" (typische hexadezimale Farbwerte, wie sie in HTML zum Einsatz kommen).
Ab diesem Moment können Sie mit der Variablen einzelne Objekteigenschaften ansprechen und weiterverarbeiten. Das Schema ist dabei stets Variable.Objekteigenschaft. Im Beispiel wird einfach mit Hilfe der alert-Funktion der Inhalt von Test.Farbwert_R am Bildschirm ausgegeben.
Komplettbeispiel einer HTML-Datei
<html> <head> <title>Beispiel mit JavaScript</title> <script language="JavaScript"> <!-- function SagDatumUndZeit() { var Jetzt = new Date(); var Tag = Jetzt.getDate(); var Monat = Jetzt.getMonth(); var Jahr = Jetzt.getYear(); var Stunden = Jetzt.getHours(); var Minuten = Jetzt.getMinutes(); var NachVoll = ((Minuten < 10) ? ":0" : ":"); alert("Guten Tag!\nHeute ist der " + Tag + "." + Monat + "." + Jahr + "\nEs ist jetzt " + Stunden + NachVoll + Minuten + " Uhr"); } // --> </script> </head> <body onload="SagDatumUndZeit()"> </body> </html>Im Beispiel wird mit Hilfe des in JavaScript eingebauten Date-Objekts das aktuelle Datum und die aktuelle Uhrzeit ermittelt. Mit der alert-Funktion werden die ermittelten Einzelwerte zusammen mit einem Begüßungstext sauber formatiert am Bildschirm ausgegeben.
Zuerst muß eine dazu neue Variable angelegt werden. Im Beispiel ist dies die Variable Jetzt. Diese Variable soll auf Daten des Date-Objekts zugreifen können. Dies geschieht durch ein Istgleichzeichen hinter dem Variablennamen. Dahinter folgt das JavaScript-Schlüsselwort new und dahinter, durch ein Leerzeichen getrennt, der Aufruf der Standardfunktion Date() zum Erzeugen eines neuen Date-Objekts.
Nach dem Aufruf stehen in Jetzt "theoretisch" alle Einzelheiten des aktuellen Datums und der aktuellen Zeit. Um die einzelnen Objekteigenschaften von Date, also Tag, Monat, Jahr usw. anzusprechen, müssen Sie entsprechende Methoden des Standardobjekts Date aufrufen. Diese Methoden, z.B. getDate() oder getHours(), haben als Rückgabewert jeweils einen Datums/Uhrzeit-Bestandteil. So liefert getDate() beispielsweise den aktuellen Tag des Monats und getHours() die aktuelle Stundenzahl des Tages. Im Beispiel wird für jeden der benötigten Bestandteile eine Variable definiert. In der Variablen Tag wird beispielsweise durch Aufruf von Jetzt.getDate() der aktuelle Tag des Monats gespeichert.
Die Anweisung im Beispiel, die mit NachVoll ... beginnt, kann an dieser Stelle nicht näher erläutert werden. Die Anweisung ist eine Vorbereitung zur sauberen Formatierung der Uhrzeit.
Beispiele
var test; var x = 1; var y = Math.sin(x); x += y; var Text = "Der Sinus von 1 ist: "Variablen können mit Hilfe des JavaScript-Schlüsselworts var definiert werden. Dieses Schlüsselwort ist zwar nicht zwingend notwendig, macht den Quellcode aber lesbarer, da es signalisiert, daß die betreffende Anweisung eine Variablendefinition ist.
Wertänderungen von Variablen sind das A & O bei der Programmierung. Sie werden nur dann erfolgreich eigene Programme schreiben können, wenn Sie jederzeit den Überblick haben, was in einer Variablen an einem bestimmten Punkt des Programmablaufs steht. Besonders, wenn Sie mit Kontrollstrukturen arbeiten, werden Sie schnell feststellen, wie leicht der Überblick über den aktuellen Zustand einer Variablen verloren gehen kann.
Besonderheiten bei JavaScript-Variablen
Variablen von JavaScript sind nicht so streng "getypt" wie in vielen anderen Programmiersprachen. Außer der Unterscheidung von numerischen und nicht-numerischen Variablen gibt es keine Unterscheidung. Kommazahlen und Ganzzahlen benötigen keine unterschiedlichen Typen. Der Inhalt von numerischen Variablen kann ohne vorherige Konvertierung in Zeichenketten auf den Bildschirm oder in Meldungsfenster geschrieben werden.
Beispiele
var Variable1 = "Hier erfolgt ein\nZeilenumbruch"; var Variable2 = "Hier erfolgt ein\fWagenrücklauf"; var Variable3 = "Hier erfolgt ein\bBackspace"; var Variable4 = "Hier erfolgt ein\rDOS-Extra-Zeilenumbruch"; var Variable5 = "Hier erfolgt ein\tTabulator"; var Variable6 = "Hier erfolgt ein\"Anführungszeichen";Steuerzeichen dieser Art werden durch das Zeichen \ eingeleitet. Dahinter folgt ein Buchstabe, der das Steuerzeichen markiert.
Beispiele
1E1 1.2345E4 2e-3Mit e oder E bestimmen Sie die Anzahl Nullen, die hinter der Zahl vor dem e bzw. E stehen.
Beispiel
SinnDesLebens = 42;
Beispiele
if(SinnDesLebens == 42) return 1; if(SinnDesLebens != 42) return 0; if(SinnDesLebens > 42) return 0; if(SinnDesLebens < 42) return 0; if(Alter >= 18) alert("SIE duerfen das hier sehen!"); if(Alter <= 17) alert("SIE duerfen das hier NICHT sehen!");Um abzufragen, ob zwei Werte gleich sind, notieren Sie zwei Istgleichzeichen == nebeneinander.
Nähere Information zu der If-Abfrage erhalten Sie im Abschnitt über Kontrollstrukturen.
Berechnungsoperatoren
Um mit numerischen Werten Berechnungen durchzuführen, brauchen Sie Berechnungsoperatoren.
Beispiele
var Zwei = 1 + 1; var GarNix = 1 - 1; var AuchNix = 81 / 3 - 27; var WenigerAlsNix = 81 / (3 - 27); var SinnDesLebens = 6 * 7; var MachtAuchSinn = 84 / 2; var ZufallswertZw1Und60 = jetzt.getTime() % 60;Mathematische Operatoren notieren Sie mit den dafür üblichen Zeichen. Mit + notieren Sie eine Addition, mit - eine Subtraktion, mit * eine Multiplikation, mit / eine Division. Eine Besonderheit stellt der Operator % dar. Damit wird eine sogenannte Modulo-Division durchgeführt. Bei einer Modulo-Division werden zwei Werte dividiert. Das Ergebnis ist jedoch im Gegensatz zur normalen Division nur der Restwert der Division. Wenn Sie z.B. 13 % 5 notieren, erhalten Sie als Ergebnis 3, weil 13 geteilt durch 5 gleich 2 Rest 3 ergibt. Diese 3 ist es, die als Ergebnis einer Modulo-Division herauskommt.
Beispiele
var Zaehler = 0; var i = 42; var k = 1; while(Zaehler <= 10) { ++i; *=k; ++Zaehler; } var Zaehler = 100; var i = 5000; var k = 123456; var x = 654321; while(Zaehler > 0) { --i; /=k; %=x; --Zaehler; }Inkrementation, also Hochzählen, können Sie mit den Grundrechenarten Addition und Multiplikation durchführen, Dekrementation, also Herunterzählen, mit den Grundrechenarten Subtraktion und Division. Additions-Inkrementation wird mit ++ notiert, Multiplikations-Inkrementation mit *=. Subtraktions-Dekrementation wird mit -- notiert, Divisions-Inkrementation mit /=. Mit %= können Sie auch Modulo-Divisionen hoch- bzw. herunterzählen.
Beispiele
if(PLZ >= 80000 && PLZ <= 82000) alert("Sie wohnen wohl in Muenchen oder Umgebung!") if(x > 100 || y == 0) break;Mit dem logischen Operator && verknüpfen Sie zwei oder mehrere Bedingungen durch "und", d.h. beide bzw. alle Bedingungen müssen erfüllt sein, damit die gesamte Bedingung erfüllt ist.
>> verschiebt Bits nach rechts
<< verschiebt Bits nach links
& definiert in einer Bitmaske eine Und-Bedingung
| definiert in einer Bitmaske eine inklusive Oder-Bedingung
^ definiert in einer Bitmaske eine exklusive Oder-Bedingung
Operator zur Zeichenkettenverknüpfung
Mit einem einfachen Pluszeichen + können Sie eine Zeichenkette an eine andere anhängen.
Beispiel
var Vorname = "Stefan " var Zuname = "Muenz" var Name = Vorname + Zuname + ", der Autor dieses Dokuments"Sie können sowohl Zeichenkettenvariablen als auch direkte Zeichenkettenangaben aneinanderhängen.
Beispiel
if(Email-Adresse == "trotzkopp@machmit.de") { alert("Hallo Du altes Haus, auch mal wieder auf meiner Homepage?!"); alert("Sei nichtsdestotrotz willkommen <g>!"); } else alert("Seien Sie willkommen auf meiner Homepage");Mit if leiten Sie eine Wenn-Dann-Bedingung ein. Dahinter folgt, in Klammern stehend, die Formulierung der Bedingung. Um solche Bedingungen zu formulieren, brauchen Sie Vergleichsoperatoren und in den meisten Fällen auch Variablen. Für Fälle, in denen die Bedingung nicht erfüllt ist, können Sie einen "andernfalls"-Zweig definieren. Dies geschieht durch else.
Beispiel
var DuBistEin = (Antwort == "42") ? "Genie" : "Dummkopf"; alert(quot;Deine Antwort zeigt mir, dass Du ein quot; + DuBistEin + "bist!"Eine einfache Entweder-Oder-Abrage wird mit einer Bedingung eingeleitet. Die Bedingung muß in Klammern stehen, im Beispiel (Antwort == 42). Dahinter wird ein Fragezeichen notiert. Hinter dem Fragezeichen wird ein Wert angegeben, der aktuell ist, wenn die Bedingung erfüllt ist. Dahinter folgt ein Doppelpunkt, und dahinter ein Wert für den Fall, daß die Bedingung nicht erfüllt ist. Da es sich um Werte handelt, die für die Weiterverarbeitung nur sinnvoll sind, wenn sie in einer Variablen gespeichert werden, wird einer solchen Entweder-Oder-Abrage in der Regel eine Variable vorangestellt, im Beispiel die Variable DuBistEin. Der Variablen wird durch diese Art von Anweisung das Ergebnis der Entweder-Oder-Abrage zugewiesen.
Beispiel
var i = 0 while(Antwort != "42") { alert("Ihre Antwort ist falsch! Hier kommen Sie erst rein, wenn die Antwort richtig ist."); start(); i++; if(i > 5) { alert("Sie sind einfach zu dumm, aber Sie kommen trotzdem rein! Ist das nicht nett?"); break; } }Eine while-Schleife beginnt mit dem Wort while. Dahinter folgt, in Klammern stehend, die Bedingung. Um eine Bedingung zu formulieren, brauchen Sie Vergleichsoperatoren. Der Inhalt der Schleife wird solange wiederholt, wie die Schleifenbedingung wahr ist. WICHTIG: Achten Sie bei solchen Schleifen immer darauf, daß es mindestens eine Möglichkeit gibt, um die Schleife nach einer angemessenen Zeit zu beenden. Andernfalls erzeugen Sie eine sogenannte "Endlosschleife", aus der der Anwender nur durch gewaltsames Beenden des WWW-Browsers herauskommt. Das ist besonders bei Online-Sitzungen im WWW sehr ärgerlich!
In der Regel enthält eine while-Schleife mehrere Anweisungen, die innerhalb der Schleife stehen. Notieren Sie alle Anweisungen innerhalb geschweifter Klammern { und }, so wie im Beispiel.
Um Endlosschleifen zu vermeiden, brauchen Sie irgendetwas, das irgendwann zu einem Ausweg aus der Schleife führt. Meistens werden zu diesem Zweck sogenannte "Zähler" definiert, im Beispiel die Variable i. Diese Variable hat im Beispiel einen Anfangswert von 0 und wird innerhalb der Schleife bei jedem Durchgang mit der Anweisung i++; um 1 erhöht. Wenn im Beispiel der Zählerstand höher als 5 ist, wird mit Hilfe einer Wenn-Dann-Bedingung sichergestellt, daß der Anwender die Schleife verlassen kann. Wichtig ist dabei auch die Notierung von break;. Durch dieses reservierte Wort wird der Ausstieg aus einer Schleife sichergestellt.
Schleifen mit "for"
Mit Hilfe von for-Schleifen vermeiden Sie die Probleme von while-Schleifen. Die Schleifenbedingung einer for-Schleife sieht von vorneherein einen Zähler und eine Abbruchbedingung vor.
Beispiel
for(i = 1; i <= 100; i++) { var x = i * i; document.write("<br>Das Quadrat von " + i + "ist " + x); }Eine for-Schleife beginnt mit dem Wort for. Dahinter wird, in Klammern stehend, die Schleifenbedingung formuliert. Bei der for-Schleife gilt dabei eine feste Syntax. Innerhalb der Schleifenbedingung werden drei Anweisungen notiert. In der ersten Anweisung wird ein Schleifenzähler definiert und initialisiert. Im Beispiel wird ein Zähler i definiert und mit dem Wert 1 initialisiert. Die zweite Anweisung enthält die Bedingung, ab der die Schleife beendet wird. Dazu brauchen Sie Vergleichsoperatoren. In der dritten Anweisung wird der Schleifenzähler so verändert, daß er irgendwann die in der zweiten Anweisung notierte Bedingung erfüllt. Im Beispiel wird i bei jedem Schleifendurchgang um 1 erhöht, so daß der Wert irgendwann größer 100 ist und damit die Bedingung der zweiten Anweisung erfüllt.
Eine spezielle Abart der for-Schleife ist die for-in-Schleife.
Beispiel
function Objekteigenschaften(Objekt, ObjName) { var Ergebnis = ""; for (var Eigenschaft in Objekt) { Ergebnis += ObjName + "." + Eigenschaft + " = " + Objekt[Eigenschaft] + "<br>"; } return Ergebnis; }In diesem Beispiel ermittelt die Funktion Objekteigenschaften alle Eigenschaften eines JavaScript-Objekts. Die ermittelten Eigenschaften sammelt die Funktion in einer HTML-formatierten Zeichenkette und gibt diese an eine aufrufende Funktion zurück.
Beispiele
var OffizielleStatistik = 3.29 * 3 + 4.71; var MeineStatistik = 3.29 * (3 + 4.71); if( x < y || (x > z && z != y)) HaengDichAuf();Beachten Sie beim Verschachteln von Klammern, daß die Anzahl der geöffneten und geschlossenen Klammern stets gleich sein muß, damit der gesamte Ausdruck korrekt ist. Die Verschachtelungstiefe ist beliebig.
Beispiel
<body onLoad="PruefeAnwenderIntelligenz()">Alle Event-Handler beginnen mit on.... Der Event-Handler onLoad bedeutet beispielsweise so viel wie "beim Laden".
onChange:
Dieser Event-Handler bedeutet so viel wie "bei Verlassen und geändertem Wert" und kann innerhalb von Formularen folgenden HTML-Tags vorkommen:
onClick:
Dieser Event-Handler bedeutet so viel wie "beim Anklicken" und kann innerhalb von Verweisen und Formularen in folgenden HTML-Tags vorkommen:
onFocus:
Dieser Event-Handler bedeutet so viel wie "Bei Positionieren auf dieses Element" und kann innerhalb von Formularen folgenden HTML-Tags vorkommen:
onLoad:
Dieser Event-Handler bedeutet so viel wie "Nach dem Laden" und kann beim Laden von HTML-Dateien folgenden HTML-Tags vorkommen:
onMouseOver:
Dieser Event-Handler bedeutet so viel wie "beim Darüberfahren mit der Maus" und kann innerhalb von Verweisen in folgendem HTML-Tag vorkommen:
onSelect:
Dieser Event-Handler bedeutet so viel wie "beim Markieren von Text" und kann innerhalb von Formularen folgenden HTML-Tags vorkommen:
onSubmit:
Dieser Event-Handler bedeutet so viel wie "beim Absenden" und kann bei Formularen in folgendem HTML-Tag vorkommen:
onUnload:
Dieser Event-Handler bedeutet so viel wie "Nach dem Beenden" und kann beim Laden von HTML-Dateien folgenden HTML-Tags vorkommen:
javascript:
Inhaltsverzeichnis
Seitenanfang
Blättern:
Allgemeines zu JavaScript | Anwendungsbeispiele