javascript kurs HZTGRWSQEYXM6A6 Nieznany

background image

Gestaltung von Webseiten mit

JavaScript

Einleitung

JavaScript-Kern

Datentypen

Kontrollstrukturen

Funktionen

Objekte

Felder

Reguläre Ausdrücke

Client-seitiges JavaScript

Windows und Frames

Dokument-Objekt-Modell

Formulare

Ereignisbehandlung

Cookies

Beispiele

JavaScript
Dirk Husung

Gestaltung von Webseiten mit JavaScript (1)

background image

1

Einleitung

JavaScript ist eine (typischerweise) durch WWW-
Browser interpretierte, in HTML integrierbare Pro-
grammiersprache, von Netscape entwickelt und li-
zensiert.

Unterschieden werden JavaScript-Kern, Client-sei-
tiges („LiveScript“), und Server-seitiges JavaScript
(„LiveWire“, Active Server Pages (ASP) bei Micro-
soft).

Client-seitiges JavaScript umfaßt neben dem Java-
Script-Kern u.a. Window- und Form-Objekte sowie
ein Dokument-Objekt-Modell.

Server-seitiges JavaScript stellt File-, Database-,
Request- und Client-Objekte zur Verfügung und bil-
det (eine herstellerabhängige) Alternative zu CGI-
Skripten.

Im folgenden sollen der JavaScript-Kern und Client-
seitiges JavaScript betrachtet werden.

JavaScript
Dirk Husung

Einleitung (2)

background image

JavaScript lehnt sich in seiner Syntax (wie Java) an
C an.

Ab der Version 1.3 ist JavaScript vollständig kon-
form zu den internationalen Standards ECMA-262

1

und ISO-16262

2

.

Der MS Internet-Explorer interpretiert tatsächlich
eine Sprachvariante, JScript, die spezielle Befeh-
le für Betriebssystemerweiterungen bereitstellt.

Was kann JavaScript?

JavaScript stellt eine vollwertige Programmier-
sprache dar.

Es unterstützt beliebige Berechnungen mit ei-
ner Vielzahl von Standardfunktionen.

Event-Handler erlauben es, auf Benutzereinga-
ben über Tastatur oder Maus zu reagieren.

Mit Hilfe des Window-Objekts ist es möglich,
neue Browser-Fenster zu erzeugen, zu öffnen
und zu schließen.

1

ECMA: European Computer Manufacturers Association

2

ISO: International Organization for Standards

JavaScript
Dirk Husung

Einleitung (3)

background image

Im einfachsten Fall lassen sich vordefinierte
Popup-Dialogboxen anzeigen, etwa bevor ein
Benutzer ein wichtiges Formular versendet.

Im allgemeinen können Größe und Position so-
wie Kontrollelemente eines neuen Fensters vor-
gegeben werden.

Das Dokument-Objekt-Modell bietet Zugriff auf
eine Hierarchie von Objekten, entsprechend
dem Inhalt einer Web-Seite.

Unter Ausnutzung des Dokument-Objekt-Mo-
dells ist es möglich, Dokumente von Grund auf
vollständig aufzubauen.

IE 4 unterstützt ein vollständiges Dokument-Ob-
jekt-Modell, das es gestattet, Inhalt und Ausse-
hen eines jeden Elements zu modifizieren.

document.write()

fügt beliebigen HTML-

Code in ein Dokument ein, zu dem Zeitpunkt,
zu dem die Seite von dem Browser analysiert
wird.

Das Form-Objekt erlaubt den Zugriff auf HTML-
Formulare, insbesondere Button-, CheckBox-,

JavaScript
Dirk Husung

Einleitung (4)

background image

Hidden-, Password-, Radio-, Reset-, Select-,
Submit-, Text- und TextArea-Elemente.

Damit gestattet JavaScript die Konsistenzprü-
fung von Formularen vor ihrer Versendung und
die Vorverarbeitung von Eingaben.

JavaScript kann steuern, welche Web-Seiten im
Browser angezeigt werden.

Das History-Objekt stellt die Funktionalität des
Forward- und Back-Buttons zur Verfügung.

Es ist möglich, beliebige Meldungen in der Sta-
tuszeile des Browser-Fensters anzuzeigen, et-
wa wenn der Benutzer die Maus über einen Hy-
pertextlink bewegt.

Ein Navigator-Objekt liefert Rechner-Plattform,
Name und Version des Browsers.

JavaScript erlaubt es, Cookies zu schreiben und
zu lesen: einige wenige Zustandsdaten, die tem-
porär oder dauerhaft durch den Client gespei-
chert werden.

JavaScript
Dirk Husung

Einleitung (5)

background image

Seit JavaScript 1.1:

Austausch eines per IMG-Tag angezeigten Bil-
des

Zusammenarbeit mit Java Applets

Scrollen von Fensterinhalten

Seit JavaScript 1.2:

Modell zur Ereignisbehandlung

Style-Sheets

dynamische Positionierung

reguläre Ausdrücke

switch

-Anweisung

delete

-Operator

Ein Screen-Objekt liefert Größe und Farbtiefe
des verwendeten Bildschirms

Verschieben und Verändern der Größe von Fen-
stern

JavaScript
Dirk Husung

Einleitung (6)

background image

Was kann JavaScript nicht?

JavaScript bietet keine Grafikfunktionen über die
vordefinierten GUI-Elemente hinaus.

JavaScript kennt keine Methoden, die es gestat-
ten, Frames direkt zu erzeugen oder zu verän-
dern.

Versionen

JavaScript

Navigator

Internet Explorer

JavaScript 1.0 Navigator 2.0

Explorer 3.0

JavaScript 1.1 Navigator 3.0

Explorer 4.0

JavaScript 1.2 Navigator 4.0–4.05 Explorer 4.0, teilw.

JavaScript 1.3 Navigator 4.06–4.5

JavaScript
Dirk Husung

Einleitung (7)

background image

1.1

Einführendes Beispiel

Einfache JavaScript-Eingaben können über ein
JavaScript-Pseudo-Protokoll erfolgen:

javascript:

URL

Bei dem Netscape Navigator öffnet die alleinige Ein-
gabe von

javascript:

als URL eine JavaScript-Konsole.

Integration von JavaScript in eine HTML-Datei:

<html><head>
<title>JavaScript-Test</title>
<script language="JavaScript">
<!--

function Quadrat (Zahl) {

Ergebnis = Zahl * Zahl;
alert (Zahl + "^2 = " + Ergebnis);

}

//-->
</script>
</head><body>
<form>
<input type=button

value="Quadrat von 7 errechnen"
onClick="Quadrat(7)">

</form>
</body></html>

JavaScript
Dirk Husung

Einführendes Beispiel (1)

background image

Alternativ können JavaScripte in eigenen Dateien
gespeichert werden:

<html><head>
<title>JavaScript-Test</title>
<script language="JavaScript"

src="quadrat.js" type="text/javascript">

</script>
</head><body>
<form>
<input type=button

value="Quadrat von 6 errechnen"
onClick="Quadrat(6)">

</form>
</body></html>

JavaScript-Debugger stehen zur Verfügung unter:

http://developer.netscape.com/products/jsdebug/
http://www.microsoft.com/scripting/debugger/

JavaScript
Dirk Husung

Einführendes Beispiel (2)

background image

2

Lexikalische Elemente

JavaScript ignoriert Zwischenraumzeichen zwi-
schen Sprachelementen.

Grundsätzlich wird jede Anweisung durch ein
Semikolon abgeschlossen. Ein Semikolon hin-
ter der letzten Anweisung einer Zeile ist optio-
nal.

Kommentare

// Kommentar bis zum Zeilende
/* Kommentar über mehrere Zeilen,

nicht schachtelbar */

<!-- Kommentar bis zum Zeilenende
//-->

Bezeichner

Folge von Buchstaben und Ziffern, beginnend
mit einem Buchstaben; „

_

“ und „

$

“ (seit Java-

Script 1.1) zählen zu den Buchstaben. Zulässig
sind nur ASCII-Zeichen (keine Umlaute).

JavaScript
Dirk Husung

Lexikalische Elemente (1)

background image

Unterscheidung zwischen Groß- und Kleinbuch-
staben (im Gegensatz zu HTML).
Ausnahmen sind bei Client-seitigem JavaScript
möglich (JavaScript Style-Sheets in Navigator 4:

document.tag.BODY.COLOR = "red";

)

Maximallänge 32 Zeichen

Reservierte Schlüsselwörter

abstract
boolean
break
byte
case
catch
char
class
const
continue
debugger
default
delete
do
double

else
enum
export
extends
false
final
finally
float
for
function
goto
if
implements
import
in

instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super

switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with

JavaScript
Dirk Husung

Lexikalische Elemente (2)

background image

3

Datentypen

JavaScript unterscheidet

primitive Datentypen

(Gleitkomma-)Zahlen

Boolsche Werte:

true

und

false

Zeichenketten

zusammengesetzte Datentypen

Objekte

Felder

Funktionen

Felder und Funktionen stellen spezielle Objekte dar.

Primitive und Referenzdatentypen

Ein primitiver Datentyp speichert seinen Wert selbst;
jede Variable eines primitiven Datentyps belegt ei-
ne feste Speicherplatzgröße.

JavaScript
Dirk Husung

Datentypen (1)

background image

Ein Referenz-Datentyp speichert einen Verweis auf
seinen Wert; Variablen desselben Referenz-Daten-
typs können unterschiedlich viel Speicherplatz be-
legen. Verschiedene Referenzvariablen können auf
denselben Wert verweisen.

Objekte, Felder und Funktionen sind als Referenz-
datentypen implementiert.

Zeichenketten können als unveränderlicher Refe-
renztyp betrachtet werden.

JavaScript
Dirk Husung

Datentypen (2)

background image

3.1

Zahlen

stellt JavaScript stets im 8-Byte-IEEE-Gleitkomma-
format dar.

Es gibt keinen gesonderten Ganzzahltyp, auch
wenn die meisten ganzzahligen Operationen auf
32-Bit-Werten ausgeführt werden.

Die mathematischen Standardfunktionen sind
als Eigenschaften des

Math

-Objekts gespeichert.

c = Math.sqrt (a*a + b*b);

Eine Zahl kann mittels

toString()

in eine Zei-

chenkette konvertiert werden:

x = 10;
s = x.toString(2); // zur Basis 2

Spezielle Werte

Wert

Bedeutung

Number.MAX_VALUE

größte darstellbare Zahl

Number.MIN_VALUE

kleinste negative Zahl

Number.NaN

„not a number“

Number.POSITIVE_INFINITY

+

Number.NEGATIVE_INFINITY

−∞

JavaScript
Dirk Husung

Zahlen (1)

background image

3.2

Zeichenketten

(Konstantenschreibweise s.u.)

JavaScript kennt keinen gesonderten Zeichentyp.

+

“ dient dem Aneinanderhängen von Zeichen-

ketten; ggf. wird dabei ein numerischer Wert in
eine Zeichenkette umgewandelt.

Achtung:

"37" + 7 // liefert 377
"37" - 7 // liefert 30

s.length

liefert die Anzahl der Zeichen einer

Zeichenkette

s

.

Einige Methoden:

s.charAt(s.length-1);
s.substring(1,4);
s.indexOf(’a’);

Navigator 4 (nicht aber IE 4) unterstützt den Zu-
griff auf einzelne Zeichen wie auf Feldelemente:

s[s.length-1];

JavaScript
Dirk Husung

Zeichenketten (1)

background image

3.3

Boolsche Werte

sind in der Regel das Ergebnis von Vergleichsope-
ratoren.

Obwohl JavaScript im Gegensatz zu C einen ei-
genständigen boolschen Datentyp kennt, erfolgt im
Bedarfsfall eine implizite Typumwandlung von

false

in

0

und von

true

in

1

.

JavaScript
Dirk Husung

Boolsche Werte (2)

background image

3.4

Objekte

stellen eine Sammlung benannter Komponenten dar.
Dies können Daten (Zustand) oder Funktionen (Ver-
halten) sein.

image.width
image.height

document.write("text");

Objekte in JavaScript können als assoziative Fel-
der dienen.

image["width"]
image["height"]

Objekte werden durch spezielle Konstruktorfunktio-
nen erzeugt:

var o = new Object();

Seit JavaScript 1.2 können Objekte mit einer Inti-
tialisierungssyntax eingeführt werden:

var point = { x:2.3, y:-1.2 };

JavaScript
Dirk Husung

Objekte (1)

background image

Für die Werte der Komponenten können beliebige
Ausdrücke angegeben werden.

Wrapper-Objekte

Zu jedem der primitiven Datentypen gibt es eine
ensprechende Wrapper-Objektklasse. Ein Wrapper-
Objekt nimmt den Wert einer Variable eines primi-
tiven Typs auf, stellt jedoch zusätzliche Komponen-
ten zur Verfügung.

JavaScript konvertiert implizit je nach Kontext pri-
mitive Variablen vorübergehend in Wrapper-Objekte
und umgekehrt.

len = s.length;

S = new String ("Hello, World");
msg = S + ’!’;

JavaScript
Dirk Husung

Objekte (2)

background image

3.5

Felder

stellen eine Sammlung indizierter Feldelemente dar.
Die Indizierung erfolgt mit natürlichen Zahlen, be-
ginnend bei 0. Die Feldelemente können beliebi-
gen Typ besitzen (heterogene Felder).

Erzeugen eines Feldes

var a = new Array();
a[0] = 1.2;
a[1] = "JavaScript";

Seit JavaScript 1.2 können Felder mit einer Initiali-
siserungssyntax eingeführt werden:

var a = [ 1.2, "JavaScript" ];

Für die Werte der Feldelemente können beliebige
Ausdrücke angegeben werden.

Auslassen eines Initialwertes bewirkt ein undefinier-
tes Element.

Achtung:Navigator 4 besitzt folgenden Fehler: Wird
in der Initialisierungssyntax nur ein einzelnes Ele-
ment angegeben, legt dessen Wert die anfängliche
Zahl der Feldelemente fest.

JavaScript
Dirk Husung

Felder (1)

background image

3.6

Funktionen

stellen in JavaScript erstrangige Datentypen dar:
Sie können in Variablen, Feldern und Objekten ge-
speichert und anderen Funktionen als Argumente
übergeben werden.

Eine Funktion, die als Eigenschaft eines Objekts
gespeichert ist, heißt Methode.

Event-Handler sind Methoden spezieller Objekte
in Client-seitigem JavaScript, die vom Web-Browser
aufgrund entsprechender Benutzeraktionen aufge-
rufen werden.

function square(x) {

return x*x;

}

Seit JavaScript 1.2 können Funktionsdefinitionen
geschachtelt werden.

Eine Funktion kann mit einem Konstruktor erzeugt
werden.

var square =

new Function ("x", "return x*x");

JavaScript
Dirk Husung

Funktionen (1)

background image

Die führenden Argumente bennen die Parameter,
das letzte Argument beschreibt den Funktionsrumpf.

square

hält einen Verweis auf die erzeugte Funk-

tion, die Funktion selbst ist „anonym“.

JavaScript 1.2 unterstützt Lamda-Funktionen, eine
Konstantenschreibweise für Funktionen:

var square = function(x) { return x*x; }

JavaScript
Dirk Husung

Funktionen (2)

background image

3.7

null

und

undefined

Der Wert

null

bedeutet, daß eine Variable keinen

gültigen Wert besitzt.

Der Wert

undefined

ergibt sich bei Benutzung ei-

ner nicht existierenden oder nicht initialisierten Va-
riable oder Methode.

Es gibt kein Schlüsselwort

undefined

.

Bei ei-

nem Vergleich werden

null

und

undefined

als

gleich behandelt, der

typeof

-Operator (ab Java-

Script 1.1) liefert jedoch:

type = typeof null;

// "object"

var undefined;
type = typeof undefined; // "undefined"

JavaScript
Dirk Husung

null

und

undefined

(1)

background image

3.8

Konstanten

Zahlen

ganzzahlige Werte:

42

(Basis 10),

0x1234

(Basis 16),

007

(Basis 8)

Gleitkommawerte:

3.1415

,

-3.1E12

,

.1e12

, oder

2E-12

Boolsche Werte

true

,

false

Zeichenketten

"123"

,

’eins zwei drei’

Da HTML sehr oft doppelte Anführungszeichen ver-
wendet, sind für JavaScript einfache empfehlens-
wert. Ein Apostroph ist dann als „

\’

“ mit einem

Backslash zu schreiben.

JavaScript
Dirk Husung

Konstanten (1)

background image

Spezielle Zeichen

\b

Backspace

\f

Seitenvorschub (form feed)

\n

Zeilenende (new line)

\r

Zeilenrücklauf (carriage return)

\t

horizontaler Tabulator

\\

Fluchtsymbol (backslash)

\’

Apostroph (quote)

\"

Anführungszeichen (double quote)

\ddd

ASCII-Zeichen in oktaler Notation

\xdd

ASCII-Zeichen in hexidezimaler Notation

\udddd

Unicode-Zeichen in hexidezimaler Notati-
on (ab Version 1.3)

Felder

array = ["eins", , "drei"];
// array[0] besitzt den Wert "eins"

Objekte

Eine Objektkonstante besteht aus einer Liste von
Paaren aus Schlüsselnamen und assoziierten Wer-
ten, eingeschlossen in „

{ }

“.

JavaScript
Dirk Husung

Konstanten (2)

background image

var Sales = "Toyota";

function CarTypes(name) {

if(name == "Honda")

return name;

else

return "Sorry, we don’t sell "
+ name + ".";

}
car = {myCar: "Saturn",

getCar: CarTypes("Honda"),
special: Sales}

document.write(car.myCar);

// Saturn

document.write(car.getCar);

// Honda

document.write(car.special); // Toyota

Spezielle Konstanten

null

JavaScript
Dirk Husung

Konstanten (3)

background image

3.9

Variablen

Eine Variable verknüpft einen Namen mit einem Wert.

Dynamische Typisierung

In JavaScript können derselben Variablen Werte
unterschiedlichen Typs zugewiesen werden.

i = 1;
i = "one";

Je nach Kontext führt JavaScript implizit Typkonver-
tierungen durch.

null

bedeutet

0

in numerischem,

false

in bool-

schem Kontext,

undefined

bedeutet

false

in boolschem Kon-

text.

Deklaration

Variablen können außerhalb von Funktionen (glo-
bal
) oder innerhalb einer Funktion (lokal) erklärt
werden.

Globale Variablen lassen sich durch einfache Wert-
zuweisung einführen, optional mit dem Schlüssel-
wort

var

, lokale Variablen sind stets mit

var

ein-

zuführen.

JavaScript
Dirk Husung

Variablen (1)

background image

var i;

Eine Wertzuweisung an eine nicht mit

var

dekla-

rierte Variable definiert ein globale Variable.

Der Versuch, den Wert einer nicht mit

var

dekla-

rierten Variable zu lesen, führt zu einem Laufzeit-
fehler.

Variablen können bei ihrer Deklaration initialisiert
werden.

var i = 0, k = 0;

Wird eine Variable nicht initialisiert, so erhält sie
den Wert

undefined

oder

NaN

in numerischem

Kontext.

Mittels

var

deklarierte Variablen sind permanent.

Sie können nicht mit

delete

gelöscht werden.

Variablen können mehrfach deklariert und initiali-
siert werden.

Sichtbarkeitsbereich

JavaScript
Dirk Husung

Variablen (2)

background image

Eine globale Variable ist programmweit sichtbar, ei-
ne lokale Variable innerhalb der Funktion, in der sie
deklariert ist, auch vor ihrer Deklaration. Im Fal-
le geschachtelter Funktionsdefinitionen besitzt je-
de Funktion ihren eigenen Sichtbarkeitsbereich.

Eine lokale Variable verdeckt eine gleichnamige glo-
bale.

var scope = "global";
function checkscope() {

document.write (scope); // undefined
var scope = "local";
document.write (scope); // "local"

}

Variablen sollten am Beginn einer Funktion dekla-
raiert werden.

Namensauflösung

Jede globale Variable wird als Komponente eines
globalen Objekts angelegt. Im Client-seitigen Ja-
vaScript dient das

window

-Objekt als globales Ob-

jekt. Es besitzt eine sich selbst referenzierende

window

-Komponente.

JavaScript
Dirk Husung

Variablen (3)

background image

Parameter und lokale Variablen einer Funktion wer-
den als Komponenten eines Aufruf-Objekts ange-
legt.

Bei Aufruf einer Funktion erzeugt der JavaScript-
Interpreter einen neuen Ausführungskontext. Teil
dieses Kontextes ist das Aufruf-Objekt.

Es werden verschiedene globale Ausführungskon-
texte unterstützt, jeder mit einem eigenen globalen
Objekt. Zwischen diesen Kontexten ist ein Daten-
austausch möglich (Sicherheitproblem!)

Jedem Ausführungskontext ist eine Sichtbarkeits-
kette zugeordnet: Dazu sind die Aufruf-Objekte ent-
sprechend der lexikalischen Struktur der zugehöri-
gen Funktionsdefinitionen verkettet.

JavaScript

sucht den Wert einer Variablen entlang dieser Ket-
te.

Garbage Collection

JavaScript besitzt eine automatische Speicherfrei-
gabe.

JavaScript
Dirk Husung

Variablen (4)

background image

3.10

Operatoren

Operator-Priorität

Operatorart

Operatoren

Komponetenzugriff

. []

Instantiierung

new

Unterprogrammaufruf

()

Negation/Inkrement

! ~ - + ++ -- typeof void

delete

Multiplikation/Division

* / %

Addition/Subtraktion

+ -

bitweiser Shift

<< >> >>>

Vergleich

< <= > >=

Gleichheit

== !=

bitweises Und

&

bitweises Exklusiv-Oder

^

bitweises Oder

|

logisches Und

&&

logisches Oder

||

Bedingter Ausdruck

?:

Zuweisung

= += -= *= /= %= <<= >>=

>>>= &= ^= |=

Komma

,

JavaScript
Dirk Husung

Operatoren (1)

background image

Anmerkungen:

JavaScript konvertiert Operanden in die geeig-
neten Typen für eine Operation, wenn möglich.

i = "3"*"5" // 15

Der Zuweisungsoperator liefert den Wert des
rechten Operanden.

Vergleichsoperatoren

Operator Beschreibung

==

true

bei gleichem Wert, ggf. nach Typkonvertie-

rung

!=

true

bei ungleichem Wert, selbst nach Typkon-

vertierung

===

true

bei gleichem Typ und Wert

!==

true

bei ungleichem Typ oder Wert

>

größer

>=

größer oder gleich

<

kleiner

<=

kleiner oder gleich

JavaScript
Dirk Husung

Operatoren (2)

background image

Zwei Operanden werden wie folgt auf Gleichheit
verglichen:

Besitzen die Operanden denselben Typ, werden
ihre Werte verglichen.

Besitzt einer der Operanden den Wert

NaN

, sind

die Operanden ungleich.

Referenzieren die Operanden verschiedene Ob-
jekte, sind sie ungleich, selbst wenn beide Ob-
jekte zu gleichen primitiven Datentypen konver-
tiert werden könnten.

Ist einer der Operanden

null

und der andere

undefined

, sind die Operanden gleich.

Andernfalls wird versucht, die Operanden in glei-
che Typen zu konvertieren:

Ist der eine Operand eine Zahl, der andere ei-
ne Zeichenkette, wird die Zeichenkette in eine
Zahl konvertiert und der Vergleich erneut durch-
geführt.

Besitzt einer der Operanden einen boolschen
Wert, wird

false

nach

0

,

true

nach

1

kon-

vertiert und der Vergleich erneut durchgeführt.

JavaScript
Dirk Husung

Operatoren (3)

background image

Ist einer der Operanden ein Objekt und der an-
dere eine Zahl oder Zeichenkette, wird versucht,
das Objekt mittels

valueof()

oder

toString()

zu konvertieren; danach wird der Vergleich er-
neut ausgeführt.

In allen anderen Fällen liefert der Vergleich un-
gleich.

Anmerkungen:

Wenn Navigator 3 bei einem Vergleich eine Zei-
chenkette nicht in eine Zahl konvertieren kann,
meldet er einen Fehler statt das Ergebnis

false

zu liefern.

Ist im <SCRIPT>-Tag die JavaScript-Version 1.2
angegeben, führt Navigator 4 vor einem Ver-
gleich auf Gleichheit keine Typ-Konvertierung
durch.

Der strikte Vergleichsoperator „

===

“, implemen-

tiert in IE 4, entspricht einem Vergleich auf
Gleichheit ohne vorherige Typkonvertierung der
Operanden.

null

und

undefined

werden nicht als gleich

bertrachtet.

JavaScript
Dirk Husung

Operatoren (4)

background image

Die Operatoren „

<

“, „

<=

“, „

>

“, „

>=

“ erlauben Ope-

randen beliebigen Typs, sind jedoch nur für Zah-
len und Zeichenketten erklärt; die Operanden
werden ggf. konvertiert.

Arithmetische Operatoren

Im wesentlichen wie in C, aber:

Bei „+“-Verknüpfung einer Zeichenketten mit
Zahl, wird die Zahl in eine Zeichenkette konver-
tiert, und die Zeichenketten werden aneinander-
gehängt.

s = "1" + 2 // "12"

Die Division ganzer Zahlen erfolgt gleitpunktmä-
ßig.

Der Modulo-Operator ist auch für Gleitpunkt-Da-
tentypen erklärt.

JavaScript
Dirk Husung

Operatoren (5)

background image

Bitweise Operatoren

Operator Beschreibung

&

bitweises Und

|

bitweises Oder

^

bitweises Exklusiv-Oder

~

bitweise Negation

<<

Shift um eine Bitposition nach links

>>

arithmetischer Shift um eine Bitposition nach
rechts unter Erhalt des Vorzeichens

>>>

logischer Shift um eine Bitposition nach rechts mit
Einführung einer führenden

0

Anmerkungen:

Die bitweisen Operatoren liefern

NaN

, wenn ihre

Operanden nicht ganzzahlig oder nicht als 32-
Bit-Werte darstellbar sind.

Logische Operatoren

Anmerkungen:

Kann der linke Operand von „

&&

“ zu

false

kon-

vertiert werden, liefert „

&&

“ den Wert des linken

Operanden, sonst den des rechten.

JavaScript
Dirk Husung

Operatoren (6)

background image

Kann der linke Operand von „

||

“ zu

true

kon-

vertiert werden, liefert „

||

“ den Wert des linken

Operanden, sonst den des rechten.

Spezielle Operatoren

Operator Beschreibung

new

Instantiierung eines Objekts

delete

Löschen eines Objekts, eines Objektattributs oder
eines Feldelements

this

Referenz auf das aktuelle Objekt

typeof

Typkennung (als Zeichenkette)

void

Ausdrucksauswertung ohne Ergebnisrückgabe

Anmerkungen:

Objekte und Felder werden mit dem

new

-Operator

erzeugt:

new constructor

Der

constructor

muß die Form eines Funkti-

onsaufrufs besitzen. Falls keine Argumente an-
gegeben werden, können die Klammern entfal-
len.

Der

new

-Operator erzeugt zunächst ein Objekt,

das dann der

constructor

-Funktion als Wert

von

this

übergeben wird.

JavaScript
Dirk Husung

Operatoren (7)

background image

delete

dient dem Löschen einer Objektkom-

ponente. Bei einigen vordefinierten und einigen
Client-seitigen

Objektkomponenten

bleibt

delete

wirkungslos. Ein Aufruf von

delete

für mittels

var

deklarierte Variablen führt zu ei-

ner Fehlermeldung.

Der

typeof

-Operator (seit Navigator 3 und IE 3)

liefert eine Zeichenkette, die den Typ des Ope-
randen beschreibt:

"number"

,

"string"

,

"boolean"

für die entsprechenden primitiven

Datentypen,

"object"

für Objekte, Felder und

null

,

"function"

für Funktionen sowie

"undefined"

für nicht definierte oder uninitia-

lisierte Komponenten.

Um verschiedene Objekttypen zu unterscheiden,
kann meist die

constructor

-Komponente her-

angezogen werden:

if (typeof d == "object" &&

d.constructor == Date) {

...

}

void

liefert für beliebige Operanden das Ergeb-

nis

undefined

. Dies kann nützlich sein inner-

halb von HTML-Tags:

<A HREF="javascript:void window.open();">
New Window</A>

JavaScript
Dirk Husung

Operatoren (8)

background image

4

Kontrollstrukturen

4.1

Blockanweisung

s.u.

4.2

Verzweigungs-Anweisungen

if

- und

if

-

else

-Anweisung

var array = new Array();

if (!array[0])

initialize();

var input;

if(input === undefined) {

doThis();

}
else {

doThat();

}

JavaScript
Dirk Husung

Verzweigungs-Anweisungen (1)

background image

switch

-Anweisung (ab JavaScript 1.2)

switch(Eingabe) {

case "1":

alert("Erster Zweig");
break;

case "2":

alert("Zweiter Zweig");
break;

default:

alert("Standard");
break;

}

4.3

Wiederholungs-Anweisungen

while

-Anweisung

var i = 1;

while(i <= 10) {

var x = i * i;
document.write("<br>" + i + "^2 = " + x);
i++;

}

JavaScript
Dirk Husung

Wiederholungs-Anweisungen (1)

background image

for

-Anweisung

for(i = 1; i <= 10; i++) {

var x = i * i;
document.write("<br>" + i + "^2 ist " + x);

}

var Ergebnis = "";

for (var Eigenschaft in Objekt) {

Ergebnis += ObjName + "." + Eigenschaft

+ " = " + Objekt[Eigenschaft] + "<br>";

}

do

-

while

-Anweisung

var i = 1;

do {

var x = i * i;
document.write("<br>" + i + "^2 ist " + x);

} while(i <= 10);

JavaScript
Dirk Husung

Wiederholungs-Anweisungen (2)

background image

4.4

Spezielle Anweisungen

break

- und

continue

-Anweisung

while (i < 6) {

if (i == 3) {

alert("Das war’s, i ist gleich " + i);
break Ende;

}
i++;

}
Ende:

with

-Anweisung

with(document) {

open();
write("Hintergrundfarbe: " + bgColor);
close();

}

JavaScript
Dirk Husung

Spezielle Anweisungen (1)

background image

5

Funktionen

5.1

Funktionsdefinition

function square(x) {

return x*x;

}

Anmerkungen:

Wird eine Funktion mit mehr Argumenten auf-
gerufen als vereinbart, werden die überzähligen
Argumente ignoriert.

Wird eine Funktion mit weniger Argumenten auf-
gerufen als vereinbart, erhalten die restlichen
Paramter den Wert

undefined

.

Enthält eine Funktionsdefinition keine

return

-

Anweisung, liefert sie den Wert

undefined

zu-

rück.

Obige Funktionsdefinition erzeugt ein Funktionsob-
jekt und weist es der Variablen

square

zu; ent-

sprechend ist zulässig:

JavaScript
Dirk Husung

Funktionsdefinition (1)

background image

var f = square;
var y = f(2);

Funktionen können an Objektkomponenten zuge-
wiesen werden; sie werden damit zu Methoden:

var o = new Object;
o.square = function (x) { return x*x; };

5.2

Argument-Objekt

Parameter und lokale Variablen einer Funktion wer-
den als Komponenten eines Aufruf-Objekts ange-
legt.

Ein Aufruf-Objekt definiert außerdem eine Kompo-
nente

arguments

, die auf ein

arguments

-Objekt

verweist. Dieses Objekt stellt ein Feld dar:

arguments.length

liefert die Anzahl aktueller Ar-

gumente,

arguments[i]

das

i

-te Argument.

Damit sind Funktionen für beliebige Argumentan-
zahl implementierbar:

JavaScript
Dirk Husung

Argument-Objekt (1)

background image

function max()
{

var m = Number.NEGATIVE_INFINITY;

for (var i = 0; i < arguments.length; i++)

if (arguments[i] > m)

m = arguments[i];

return m;

}

arguments

besitzt zusätzlich die Komponenten

callee

(seit JavaScript 1.2) und

caller

(seit Na-

vigator 4 mit geänderter Bedeutung):

arguments.callee

verweist auf die aktuell aus-

geführte Funktion. Damit kann eine anonyme Funk-
tion rekursiv aufgerufen werden.

arguments.caller

verweist auf das Argument-

Objekt der Funktion, die die aktuell ausgeführte auf-
gerufen hat, die aufrufende Funktion selbst ergibt
sich mit

arguments.caller.callee

.

5.3

Funktions-Objekt

Die

length

-Komponente eines Funktions-Objekts

liefert die Zahl definierter Parameter. Seit Java-
Script 1.2 wird die Verwendung von

arity

statt

length

empfohlen (mit gleicher Bedeutung).

JavaScript
Dirk Husung

Funktions-Objekt (1)

background image

Achtung:In Navigator 4 sind

arity

und

length

nur korrekt implementiert für JavaScript 1.2.

Seit Navigator 4 definiert ein Funktionsobjekt die
Methoden

apply()

und

call()

. Sie erlauben die

betreffenden Funktion aufzurufen, als sei sie Me-
thode eines anderen Objekts:

f.apply (o, [1,2]);

oder

f.call (o, 1, 2);

vergleichbar mit

o.m = f;
o.m(1,2);
delete o.m;

Benutzterdefinierte Komponenten eines Funktions-
objekts entsprechen

static

-Variablen aus C; ihr

Wert besteht über einen Funktionsaufruf hinaus.

uniqueInteger.counter = 0;

function uniqueInteger() {

return uniqueInteger.counter++;

}

JavaScript
Dirk Husung

Funktions-Objekt (1)

background image

5.4

Prototyp-Objekt

Ein Funktionsobjekt besitzt eine

prototype

-Kom-

ponente, die auf ein vordefiniertes Prototyp-Objekt
verweist.

JavaScript
Dirk Husung

Prototyp-Objekt (2)

background image

6

Objekte

Objekte können erzeugt werden mit dem

new

-

Operator gefolgt von dem Aufruf einer Konstruk-
tor-Funktion oder seit JavaScript 1.2 mit einer
Literalschreibweise.

Auf Objekt-Komponenten wird mit dem „

.

“-Ope-

rator zugegriffen.

Der Versuch, den Wert einer nicht definierten
Komponente zu lesen, liefert

undefined

.

Eine Objekt-Komponente wird durch einfache
Wertzuweisung erzeugt (ohne

var

).

Seit JavaScript 1.2 kann eine Objekt-Komponen-
te mit

delete

gelöscht werden.

Mit der

for/in

-Schleife können alle benutzer-

definierten Komponenten eines Objekts durch-
laufen werden; einige vordefinierte Komponen-
ten bleiben unberücksichtigt.

function listPropertyNames (obj) {

var names = "";
for (var i in obj)

names += i + "\n";

alert (names);

}

JavaScript
Dirk Husung

Objekte (1)

background image

6.1

Konstruktor-Funktionen

Eine Konstruktor-Funktion dient der Initialisierung
eines neu erzeugten Objekts.

Sie wird durch den

new

-Operator aufgerufen und

erhält einen Verweis auf ein neu erzeugtes, leeres
Objekt als Wert der vordefinierten

this

-Variable.

Konstruktor-Funktionen liefern in aller Regel kein
Ergebnis. Gegebenenfalls ersetzt der Rückgabe-
wert das zuvor angelegte Objekt als Ergebnis des

new

-Operators.

6.2

Methoden

Eine Methode ist eine JavaScript-Funktion, deren
Aufruf an ein Objekt geknüpft ist. Über die vordefi-
nierte

this

-Variable erhält die Methode Zugriff auf

dieses Objekt.

Einer Methode wird auf diese Weise stets ein zu-
sätzliches implizites Argument übergeben.

JavaScript
Dirk Husung

Methoden (1)

background image

Allerdings gilt: Eine Funktion speichert ihren Wert
in einer Variablen. Jede globale Variable wird als
Komponente eines globalen Objekts gespeichert.
Eine Funktion ist damit zunächst Methode dieses
globalen Objekts,

this

verweist innerhalb der Funk-

tion auf das globale Objekt.

Der Unterschied liegt in der Intention: Methoden
wirken vorrangig auf das Objekt, an das ihr Aufruf
geknüpft ist, Funktionen sind eigenständig.

6.3

Prototyp-Objekt

Es ist ineffizient, mittels einer Konstruktor-Funktion
dieselben Methoden in jedem einzelnen Objekt ein-
zutragen; eine Lösung bietet seit JavaScript 1.1
das Prototyp-Objekt.

Zu jeder Konstruktor-Funktion wird ein Prototyp-
Objekt erzeugt und jedes mit einer Konstruktor-
Funktion initialisierte Objekt erbt alle Komponen-
ten dieses Prototyp-Objekts; die Komponenten des

JavaScript
Dirk Husung

Prototyp-Objekt (1)

background image

Prototyp-Objekts erscheinen unmittelbar als Kom-
ponenten des Objekts, auch wenn sie dem Proto-
typ-Objekt nach Erzeugung des Objekts hinzuge-
fügt werden.

Damit eignet sich das Prototyp-Objekt ideal zur
Speicherung von Konstanten und Methoden.

Wird lesend auf eine Objekt-Komponente zugegrif-
fen, so wird die Komponente zunächst in dem Ob-
jekt, dann in dessen Prototyp-Objekt gesucht.

Bei einer Wertzuweisung bleibt das Prototyp-Objekt
dagegen unberücksichtigt, es wird eine Komponen-
te in dem betreffenden Objekt angelegt, die eine
gleichnamige Komponente des Prototyp-Objekts ver-
deckt.

In Navigator 4 wird zu jeder Funktion ein Prototyp-
Objekt erzeugt, für den Fall, daß die Funktion als
Konstruktor-Funktion dient. Navigator 3 erzeugt ein
Prototyp-Objekt erst bei der tatsächlichen Verwen-
dung einer Funktion als Konstruktor-Funktion.

JavaScript
Dirk Husung

Prototyp-Objekt (1)

background image

6.4

Vererbung

Ein Prototyp-Objekt ist selbst ein Objekt, erzeugt
mittels

new Object()

, besitzt damit seinerseits

ein Prototyp-Objekt. Es ist möglich, eine Klasse zur
abgeleiteten Klasse einer Basisklasse zu erklären,
indem man die

prototype

-Komponente der ab-

geleiteten Klasse setzt:

Car.prototype = new Vehicle();

Damit verliert man jedoch die von JavaScript ge-
nerierte

constructor

-Komponente des Prototyp-

Objekts für

Car

, die auf die Konstruktor-Funktion

für

Car

verweist.

Die

constructor

-Komponente ist häufig hilfreich

zur Identifizierung eines Objekttyps.

Navigator 4 bietet die Möglichkeit, präziser zu er-
klären:

Car.prototype.__proto__ =

new Vehicle.prototype;

JavaScript
Dirk Husung

Vererbung (1)

background image

6.5

Vergleich C++,Java – JavaScript

C++, Java

JavaScript

klassenbasierte Vererbung prototypbasierte Vererbung
Klasse

Konstruktor-Funktion, Prototyp

Instanzvariablen

gesetzt in Konstruktor-Funktion

Instanzmethode

Komponente des Prototyp-Ob-

jekts

Klassenvariable

Komponente des Konstruktor-

Funktionsobjekts

Klassenmethode

Komponente des Konstruktor-

Funktionsobjekts

6.6

Einige Methoden

Jedes Objekt erbt die für

Object

definierten Kom-

ponenten.

toString()

, angewandt auf ein Objekt

o

, liefert

einige interne Information über

o

, unter Navigator 4

für JavaScript 1.2 eine Literal-Darstellung des Ob-
jekts. Ab JavaScript 1.3 sollte

toSource()

statt-

dessen benutzt werden.

Wurde die originale

toString()

-Methode über-

definiert, kann sie mittels

JavaScript
Dirk Husung

Einige Methoden (2)

background image

Object.prototype.toString.apply(o);

aufgerufen werden.

valueOf()

, angewandt auf ein Objekt

o

, liefert

das Objekt selbst.

Unter Navigator 4 für JavaScript 1.2 können

watch()

und

unwatch()

zu Debug-Zwecken genutzt wer-

den: Im Fall einer Wertzuweisung an eine Objekt-
komponente wird durch den JavaScript-Interpreter
eine benutzerdefinierte Funktion aufgerufen:

function readOnlyHandler (

property, oldValue, newValue) {

if (newValue != oldValue)

alert (property + "is read only");

}

for (i in o) o.watch (i, readOnlyHandler);

JavaScript
Dirk Husung

Einige Methoden (3)

background image

7

Felder

7.1

Array-Definition

Felder können auf unterschiedliche Weise erkärt
werden:

var a = new Array();
var a = new Array(1.2, "JavaScript");
var a = new Array(10);

Achtung:Navigator 4 legt im dritten Fall für Java-
Script 1.2 statt eines 10-elementigen Feldes ein 1-
elementiges mit dem Wert

10

an.

Die Anzahl der Elemente eines Feldes kann jeder-
zeit geändert werden durch Zuweisung von Feld-
elementen oder Setzen der

length

-Komponente.

Feldelemente können beliebigen Objekten hinzu-
gefügt werden, allgemeinen Objekten fehlen jedoch
für Felder typische Komponenten (etwa

length

).

JavaScript
Dirk Husung

Array-Definition (1)

background image

7.2

Array-Methoden

join()

konvertiert alle Elemente eines Felder zu

Zeichenketten und hängt sie aneinander, standard-
mäßig getrennt durch Kommata.

var a = [1, 2, 3];
s = a.join();

// s == "1,2,3"

s = a.join(", "); // s == "1, 2, 3"

reverse()

kehrt die Reihenfolge der Elemente ei-

nes Feldes um („in Place“).

var a = [1, 2, 3];
a.reverse();

// [3, 2, 1]

sort()

sortiert die Elemente eines Feldes („in

Place“), standardmäßig in alphabetischer Reihen-
folge.

var a = [33, 4, 1111, 222];
a.sort();

// [1111, 222, 33, 4]

a.sort(function(a,b) {

return a-b;});

// [4, 33, 222, 1111]

concat()

(seit JavaScript 1.2) fügt die angegbe-

nen Argumente an ein Feld an; Felder werden da-
bei durch ihre Elemente ersetzt (nicht rekursiv).

JavaScript
Dirk Husung

Array-Methoden (2)

background image

var a = [1, 2, 3];
a.concat(4,[5,[6,7]]);

// [1,2,3,4,5,[6,7]]

slice()

(seit JavaScript 1.2) liefert einen Teilbe-

reich eines Feldes. Das erste Argument gibt den
Index des ersten Elements, das zweite Argument
verringert um 1 den Index des letzten Elements an.
Ein negatives Argument

i

wird als

length-|i|

behandelt. Fehlt das zweite Argument, wird

length

verwandt.

var a = [1, 2, 3, 4, 5];
a.slice(1,3);

// [2, 3];

toString()

liefert grundsätzlich dasselbe wie

join()

, unter Navigator 4 für JavaScript 1.2 je-

doch eine Literaldarstellung. Ab JavaScript 1.3 soll-
te

toSource()

statt

toString()

benutzt wer-

den.

JavaScript
Dirk Husung

Array-Methoden (3)

background image

8

Reguläre Ausdrücke

8.1

Muster

Muster bestehen aus Zeichenfolgen, eingeschlos-
sen zwischen zwei „/“.

In einem Muster steht ein einzelnes Zeichen für
sich selbst, mit Ausnahme folgender Sonderzeichen

Zeichen steht für

\f

Seitenvorschub (form feed)

\n

Zeilenende (new line)

\r

Zeilenrücklauf (carriage return)

\t

horizontaler Tabulator

\v

vertikaler Tabulator

\c

c

selbst für

c

aus

/ \ . * + ? | ( ) [ ] { }

\ddd

ASCII-Zeichen in oktaler Notation

\xdd

ASCII-Zeichen in hexadezimaler Notation

\cX

Kontrollzeichen

^X

JavaScript
Dirk Husung

Muster (1)

background image

Es lassen sich Zeichenklassen bilden:

Zeichen steht für

[

. . .

]

jedes Zeichen zwischen den Klammern

[^

. . .

]

jedes Zeichen nicht zwischen den Klammern

.

[^\n ]

\w

[a-zA-Z0-9]

\W

[^a-zA-Z0-9]

\s

[ \t\n\r\f\v]

\S

[^ \t\n\r\f\v]

\d

[0-9]

\D

[^0-9]

[\b]

Rückschritt (backspace), Sonderfall

Für vorangehende Teile von Mustern kann die Min-
dest- und Höchstzahl ihrer Wiederholung angege-
ben werden:

Zeichen Bedeutung

{n,m}

mindestens

n

, höchstens

m

mal

{n,}

mindestens

n

mal

{n}

genau

n

mal

?

{0,1}

+

{1,}

*

{0,}

JavaScript
Dirk Husung

Muster (2)

background image

Es können Alternativen angegeben und Teile von
Mustern gruppiert werden; auf Gruppen kann Be-
zug genommen werden.

Zeichen Bedeutung

|

entweder vorangehender oder nachfolgender Teil-
ausdruck

(

. . .

)

Gruppierung

\n

n

-te Gruppe. Gruppennummern werden durch Ab-

zählen ihrer öffnenden Klammern vergeben

Für das Auftreten von Mustern können bestimmte
Positionen vorgeschrieben werden:

Zeichen Bedeutung

^

Anfang einer Zeichenkette/Zeile

$

Ende einer Zeichenkette/Zeile

\b

Wortgrenze

\B

keine Wortgrenze

Schließlich können einem Muster Attribute ange-
hängt werden:

Zeichen Bedeutung

i

Mustervergleich

ohne

Beachtung

von

Groß-

/Kleinschreibung

g

Behandlung aller passenden Teilzeichenketten

JavaScript
Dirk Husung

Muster (3)

background image

8.2

String

-Methoden

search()

liefert den Index des ersten Zeichens

einer Zeichenkette, ab der ein gegebenes Muster
paßt, oder -1.

"JavaScript".search (/script/i);

replace()

ersetzt in einer Zeichenkette den Text,

auf den ein gegbenes Muster paßt, durch einen ge-
gebenen Ersetzungstext.

text.replace (/javascript/ig, "JavaScript");

match()

liefert zu einem gegebenen Muster bei

nicht gesetztem

g

-Attribut ein Feld, dessen erste

Komponente den gesamten passenden Teil der Zei-
chenkette enthält und dessen folgende Komponen-
ten die zu den Gruppen des Musters passenden
Teile enthalten.

Bei gesetztem

g

-Attribut liefert

match()

ein Feld

mit den Teilen einer Zeichenkette, die auf das ge-
gebene Muster passen.

JavaScript
Dirk Husung

String

-Methoden (1)

background image

"1 plus 2 plus 3".match(/\d+/g)

// ["1", "2", "3"]

split()

verwendet das gegebene Muster zur Tren-

nung einer Zeichenkette und liefert ein Feld der re-
sultierenden Teilzeichenketten.

"1,2, 3".split(/\s*,\s*/) // ["1", "2", "3"]

8.3

RegExp

-Methoden

test()

prüft, ob das Muster eines

RegExp

-Objek-

tes auf eine gegebene Zeichenkette paßt.

var pattern = /java/i;
pattern.test("JavaScript");

exec()

ähnlich der

String

-Methode

match()

.

var pattern = /java/ig;
var text = "JavaScript oder Java?";
var result;

while ((result = pattern.exec(text)) != null)

alert ("gefunden: " + result[0]

+ " an Position " + result.index);

JavaScript
Dirk Husung

RegExp

-Methoden (1)

background image

Wird das

g

-Attribut angegeben, setzt

exec()

die

lastIndex

-Komponente des

RegExp

-Objekts auf

das erste Zeichen hinter der Teilzeichenkette, auf
die das Muster paßt.

Ein erneuter Aufruf von

exec()

beginnt seine Su-

che ab der

lastIndex

-Position.

Wird keine passende Teilzeichenkette gefunden, so
wird

lastIndex

auf

0

zurückgesetzt.

JavaScript
Dirk Husung

RegExp

-Methoden (2)

background image

9

Windows und Frames

Das

window

-Objekt stellt das globale Objekt in

Client-seitigem JavaScript dar; es speichert alle glo-
balen Variablen.

Daneben besitzt es eine Reihe vordefinierter Kom-
ponenten, die die Kontrolle des Browser-Fensters
erlauben:

Daten-Komponenten

Komponente Beschreibung

closed

true

, wenn das Fenster geschlossen ist.

defaultstatus

,

status

Inhalt der Statuszeile.

document

Verweis auf das

document

-Objekt.

frames[]

Feld der Frames innerhalb des Fensters.

history

Verweis auf das

history

-Objekt.

innerHeight

,

innerWidth

,

outerHeight

,

outerWidth

innere und äußere Fenstermaße (nicht bei
IE 4).

JavaScript
Dirk Husung

Windows und Frames (1)

background image

Komponente Beschreibung

location

Verweis auf das

location

-Objekt, das die

URL des angezeigten Dokuments repräsen-
tiert. Durch Wertzuweisung kann eine andere
Seite geladen werden.

locationbar

,

menubar

,

personalbar

,

scollbars

,

statusbar

,

toolbar

legt die Sichtbarkeit der entsprechenden Teile
eines Navigator-Fensters fest (nicht bei IE 4).

name

Name des Fensters.

opener

Verweis auf das öffnende Fenster.

pageXOffset

,

pageYOffset

Ausmaß, um das der Fensterinhalt gescrollt ist
(nicht bei IE 4).

parent

Verweis auf das umschließende Fenster eines
Frame.

self

Verweis auf das

window

-Objekt selbst.

top

Verweis auf das oberste Fenster einer Frame-
Hierarchie

window

Verweis auf das

window

-Objekt selbst.

Methoden

Methode

Beschreibung

alert()

,

confirm()

,

prompt()

einfache vordefinierte Popup-Dialogboxen.

close()

schließt ein Fenster.

JavaScript
Dirk Husung

Windows und Frames (2)

background image

Methode Beschreibung

find()

,

home()

,

print()

,

stop()

Funktionalität

der

entsprechenden

Navigator-

Buttons (nicht bei IE 4).

focus()

,

blur()

fordert den Tastatur-Focus für ein Fenster bzw. gibt
ihn frei (nicht bei IE 3).

moveBy()

,

moveTo()

verschiebt ein Fenster.

resizeBy

,

resizeTo()

ändert die Fenstergröße.

scrollBy

,

scrollTo()

scrollt den Fensterinhalt.

setInterval()

,

clearInterva()

bewirkt, daß eine Funktion in gegebenen Zeitab-
ständen aufgerufen wird bzw. dies nicht länger er-
folgt.

setTimeOut()

,

clearTimeOut()

bewirkt, daß eine Funktion nach einer gegebenen
Zeit aufgerufen wird bzw. dies nicht mehr erfolgt.

JavaScript
Dirk Husung

Windows und Frames (3)

background image

9.1

Einfache Dialoge

var msg = "Grafiken in hoher Auflösung?"

if (confirm (msg))

location.replace ("hires.htm");

else

location.replace ("lowres.htm");

n = prompt ("Wie heißen Sie?");
document.write (

"<h1>Willkommen, " + n + "</h1>");

9.2

Statuszeile

<a href="sitemap.htm"

onMouseOver=

"status=’Go to Site Map’; return true;"

onMouseOut="status=’’;">

Site Map</a>

Der

onMouseOver

-Handler muß

true

liefern, um

die Standardaktion des Browsers zu unterdrücken,
die URL in der Statuszeile anzuzeigen.

Der Standardtext der Statuszeile kann durch Zu-
weisung an

defaultStatus

gesetzt werden.

JavaScript
Dirk Husung

Statuszeile (1)

background image

9.3

Periodische Aktionen

Beispiel: Uhr in der Statuszeile

<HTML>
<HEAD>
<SCRIPT>
function displayTime()
{

var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
if (m < 10) m = "0" + m;
var t = h + ’:’ + m;

defaultStatus = t;

setTimeout("displayTime()", 60000);

// 60000 ms = 1 Minute.

}
</SCRIPT>
</HEAD>
<BODY onLoad="displayTime();">
<!-- HTML Dokument -->
</BODY>
</HTML>

JavaScript
Dirk Husung

Periodische Aktionen (2)

background image

9.4

navigator

-Objekt

Die

window.navigator

-Komponente verweist auf

ein

navigator

-Objekt, das Informationen über den

verwendeten Browser liefert:

Komponente

Beschreibung

appName

Name des Browsers.

appVersion

Versionsnummer des Browsers.

userAgent

typischerweise Informationen aus

appName

und

appVersion

.

appCodeName

Codename des Browsers, z.B. „Mozilla“.

platform

Rechnerplattform (neu in JavaScript 1.2).

language

Sprachversion

des

Browsers;

z.B.

„en“ für Englisch (neu in Navigator 4,

userLanguage

,

systemLanguage

in

IE 4).

Anzeige aller Browser-Informationen:

var browser = "Browser-Informationen\n";
for (var item in navigator)

browser +=

item + ": " + navigator[item] + "\n";

alert (browser);

JavaScript
Dirk Husung

navigator

-Objekt (1)

background image

9.5

Fenster-Kontrolle

Öffnen und Schließen eines Fensters:

var win = window.open (

’javascript:"<h1>Hello</h1>"’, "hello",
"width=400,height=350,status,resizeable");

var id = window.setInterval("bounce()", 100);

function bounce() {

if (win.closed()) {

clearInterval (id);
return;

}

//...
win.moveTo (x,y);

}

win.close();

JavaScript
Dirk Husung

Fenster-Kontrolle (1)

background image

10

Dokument-Objekt-Modell

Das

document

-Objekt stellt eine Reihe nützlicher

Komponenten bereit:

Komponente

Beschreibung

alinkColor

Farbe eines aktivierten Links (während des
Anklickens).

anchors[]

Feld von Anker-Objekten.

applets[]

Feld von Applet-Objekten.

bgColor

Hintergrundfarbe des Dokuments.

cookie

erlaubt JavaScript-Programmen Cookies
zu lesen und zu schreiben.

domain

erlaubt verschiedenen Web-Servern der-
selben Internet-Domäne,

Sicherheitsbe-

schränkungen wechselseitig zu lockern.

embeds[]

Feld eingebetteter Objekte.

fgColor

Textfarbe des Dokuments.

forms[]

Feld von Formular-Elementen.

images[]

Feld von Grafiken.

lastModified

Zeichenkette mit dem letzten Änderungs-
datum.

linkColor

Farbe nicht besuchter Links.

links[]

Feld von Link-Objekten.

location

statt

location

sollte

URL

verwandt wer-

den.

JavaScript
Dirk Husung

Dokument-Objekt-Modell (1)

background image

Komponente

Beschreibung

referrer

URL des Dokuments, von dem aus das aktu-
elle Dokument aufgerufen wurde.

title

Text zwischen

<title>

und

</title>

.

URL

Zeichenkette mit der URL, von der das
aktuelle Dokument geladen wurde;

vgl.

location.href

.

vlinkColor

Farbe besuchter Links.

Auf einfache Weise läßt sich erreichen, daß vor
einer untergeordneten HTML-Seite zuerst die auf
oberster Ebene angezeigt wird:

if (document.referrer == ""

|| document.referrer.indexOf (
"mysite.com") == -1)

window.location = "http://home.mysite.com";

Folgende Zeilen implementieren einen Zufalls-Link:

<a href="about:"

onMouseOver=

"status=’click me!’; return true;"

onMouseOut="status=’’"
onClick=

"this.href=document.links[Math.floor(
Math.random()*document.links.length)]">

Zufalls-Link</a>

JavaScript
Dirk Husung

Dokument-Objekt-Modell (2)

background image
background image

Das folgende Beispiel erstellt ein Verzeichnis aller
Ankerpunkte eines Dokuments:

listanchors.nav = true;
if (navigator.appName.indexOf(

"Microsoft") != -1)

listanchors.nav = false;

function listanchors(d) {

var win = window.open("", "navwin",

"menubar,scrollbars,resizable," +
"width=600,height=300");

win.document.writeln(

"<H1>Navigation Window:<BR>" +
document.title + "</H1>");

for(var i = 0; i < d.anchors.length; i++) {

var text;
var a = d.anchors[i];
if (listanchors.nav)

text = a.text;

// Navigator 4

else

text = a.innerText; // IE 4

if ((text == null) || (text == ’’))

text = a.name;

win.document.write(

’<A HREF="#’ + a.name + ’"’ +
’ onClick="opener.location.hash=\’’ +
a.name + ’\’; return false;">’);

win.document.write(text);
win.document.write(’</A><BR>\n’);

}
win.document.close();

}

JavaScript
Dirk Husung

Dokument-Objekt-Modell (4)

background image

11

Formular-Elemente

HTML-Tag

Beschreibung; Ereignis

<input type=button>

Druckknopf;

onClick

<input type=checkbox>

Option;

onClick

<input type=file>

Eingabefeld;

onChange

<input type=hidden>

Daten, die zusammen mit ei-
nem Formular verschickt wer-
den, unsichtbar für den Benut-
zer; kein Ereignis

<option>

Eintrag innerhalb eines select-
Elements; kein Ereignis

<input type=password>

Paßwort-Eingabe;

onChange

<input type=radio>

Alternative;

onClick

<input type=reset>

Druckknopf zum Zurücksetzen
eines Formulars;

onClick

<select>

Liste oder Drop-Down-Menü
zur Auswahl eines Eintrags;

onChange

<select multiple>

Liste zur Auswahl eines oder
mehrerer Einträge;

onChange

<input type=submit>

Druckknopf zum Absenden ei-
nes Formulars;

onClick

<input type=text>

einzeiliges Textfeld;

onChange

<textarea>

mehrzeiliges Textfeld;

onChange

JavaScript
Dirk Husung

Formular-Elemente (1)

background image

11.1

Formularüberprüfung

function verify(f)
{

var msg;
var emptyFields = "";
var errors = "";

for(var i = 0; i < f.length; i++) {

var e = f.elements[i];
if ((e.type == "text"

|| e.type == "textarea")
&& !e.optional) {

if (e.value == null || e.value == ""

|| isblank (e.value)) {

emptyFields += "\n

" + e.name;

continue;

}

if (e.numeric

|| e.min != null || e.max != null) {

var v = parseFloat(e.value);
if (isNaN(v)

|| e.min != null && v < e.min
|| e.max != null && v > e.max) {
errors += "- The field " + e.name

+ " must be a number";

if (e.min != null)

errors +=

" that is greater than " + e.min;

if (e.max != null && e.min != null)

errors += " and less than " + e.max;

else if (e.max != null)

errors +=

" that is less than " + e.max;

errors += ".\n";

}

JavaScript
Dirk Husung

Formularüberprüfung (1)

background image

}

}

}
if (!empty_fields && !errors) return true;
// ...

}

<form onSubmit="

this.firstname.optional = true;
this.phonenumber.optional = true;
this.zip.min = 0;
this.zip.max = 99999;
return verify(this);

">

First name:
<input type=text name="firstname">
Last name:
<input type=text name="lastname"><br>
Address:<br>
<textarea name="address" rows=4 colS=40>
</textarea><br>
Zip Code:
<input type=text name="zip"><br>
Phone Number:
<input type=text name="phonenumber"><br>
<input type=submit>
</form>

JavaScript
Dirk Husung

Formularüberprüfung (2)

background image

12

Ereignisbehandlung

Ereignis

Eintreten

onAbort

bei Abbruch

onBlur

beim Verlassen eines Elements

onChange

bei erfolgter Änderung

onClick

beim Anklicken; Rückgabe von

false

, um

Standardaktion zu unterdrücken

onDblClick

bei doppeltem Anklicken

onError

im Fehlerfall

onFocus

beim Aktivieren eines Elements

onKeyDown

bei gedrückter Taste; Rückgabe von

false

zum Abbruch

onKeyPress

bei erfolgtem Tastendruck; Rückgabe von

false

zum Abbruch

onKeyUp

bei losgelassener Taste

onLoad

nach volständigem Laden einer Datei

onMouseDown

bei gedrückter Maustaste; Rückgabe von

false

zum Abbruch

onMouseMove

bei weiterbewegter Maus

onMouseOut

beim Verlassen des Elements mit der Maus

onMouseOver

beim Überfahren des Elements mit der
Maus; Rückgabe von

true

, um die Anzeige

einer URL in der Statuszeile zu verhindern

onMouseUp

bei losgelassener Maustaste; Rückgabe von

false

zum Abbruch

JavaScript
Dirk Husung

Ereignisbehandlung (1)

background image

Ereignis

Eintreten

onReset

beim Zurücksetzen des Formulars; Rückga-
be von

false

zum Abbruch

onRsize

beim Ändern der Fenstergröße

onSelect

beim Selektieren von Text

onSubmit

beim Absenden des Formulars; Rückgabe
von

false

zum Abbruch

onUnload

beim Verlassen der Datei

javascript:

bei Verweisen

12.1

Eventhandler als JavaScript-
Komponenten

Statt Eventhandler in HTML-Tags einzutragen

<input type="button" name="b1"

value="Press Me"
onClick="alert(’Thanks!’);">

können sie in JavaScript-Code gesetzt werden:

<input type="button" name="b1"

value="Press Me">

<script>
document.b1.onclick =

function () { alert(’Thanks!’); }

</script>

JavaScript
Dirk Husung

Eventhandler als JavaScript-Komponenten (2)

background image

Vorsicht: In diesem Fall sind gegenüber oben

Button

,

Form

und

Document

nicht Bestandteil der

Sichtbarkeitskette des Eventhandlers.

In JavaScript sind Eventhandler-Komponenten voll-
ständig klein zu schreiben.

JavaScript
Dirk Husung

Eventhandler als JavaScript-Komponenten (3)

background image

13

Cookies

13.1

Cookie-Beschränkungen

Cookies sind gedacht für die gelegentliche Spei-
cherung kleiner Datenmengen.

Ein Web-Browser braucht nicht mehr als insge-
samt 300 Cookies zu speichern,

er braucht nicht mehr als 20 Cookies je Web-
Server (nicht je Seite) zu speichern.

er braucht nicht mehr als 4 KBytes je Cookie zu
speichern (für Schlüssel und Wert zusammen).

Ein Cookie-Wert darf kein Semikolon, Komma oder
Zwischenraumzeichen enthalten.

Deshalb emp-

fiehlt sich die Verwendung der JavaScript-Funktio-
nen

escape()

und

unescape()

zur Ver- und Ent-

schlüsselung eines Cookie-Wertes.

JavaScript
Dirk Husung

Cookie-Beschränkungen (1)

background image

13.2

Speichern eines Cookies

var nextYear = new Date();
nextYear.setFullYear (
nextYear.getFullYear ()+1);
document.cookie = "version="

+ escape(document.lastModified)
+ ";expires=" + nextYear.toGMTString();

Neben dem Wert eine Cookies können folgende
Attribute gesetzt werden:

expires=Datum

standardmäßig bleiben Cookies nur bis zum Ende einer
Web-Browser-Sitzung erhalten.

path=Pfad

standardmäßig ist ein Cookie nur Web-Seiten in demsel-
ben Verzeichnis und dessen Unterverzeichnissen zugäng-
lich.

Durch Angabe eines verkürzten Pfades kann ein

Cookie auch übergeordneten Verzeichnissen und deren
Unterverzeichnissen zugänglich gemacht werden

domain=Domäne

standardmäßig ist ein Cookie nur für Web-Seiten dessel-
ben Servers zugänglich. Durch Angabe einer übergeord-
neten Domäne kann ein Cookie auch für Web-Seiten an-
derer Server zugänglich gemacht werden.

secure

Die Übertragung eines Cookies erfolgt nur über ein ver-
gleichsweise sicheres Protokoll, z.B. HTTPS.

JavaScript
Dirk Husung

Speichern eines Cookies (2)

background image

Ein Cookie kann gelöscht werden, indem er mit
demselben Schlüssel, einem beliebigen Wert und
einem bereits verstrichenen Verfallsdatum erneut
geschrieben wird.

13.3

Lesen eines Cookies

Beispiel:

var allcookies = document.cookie;
var key = "version="
var pos = allcookies.indexOf (key);

if (pos != -1) {

var start = pos + key.length;
var end = allcookies.indexOf (";", start);
if (end == -1)

end = allcookies.length;

var value = allcookies.substring (

start, end);

value = unescape (value);
if (value != document.lastModified)

alert ("Neue Version!");

}

JavaScript
Dirk Husung

Lesen eines Cookies (1)

background image

15

Beispiele

15.1

Ereignisse

<html><head><title>Events</title>
<script language="JavaScript">
<!--
if ( navigator.appName == ’Netscape’ &&

parseFloat(navigator.appVersion) >= 3

|| parseFloat(navigator.appVersion) >= 4)
version = "ro";

else

version = "noro";

if (version == "ro") {

Picture = new Array(2);
for(i = 0; i < 2; i++) {

Picture[i] = new Image();
Picture[i].src = "welcome"+i+".gif";

}

}

function picChange (name,number) {

if (version == "ro")

name.src = Picture[number].src;

}
//-->
</script>
</head><body>
<a href="event.htm"

onMouseOut="picChange(welcome,0)"
onMouseOver="picChange(welcome,1)">
<img name="welcome" src="welcome1.gif"
border=0 width="201" height="210"></a>

</body></html>

JavaScript
Dirk Husung

Ereignisse (1)

background image

15.2

Cookies

<html><head><title>Cookies</title>
<script language="JavaScript">
<!--
function readValue () {

var value = "";
if (document.cookie) {

var valueStart =

document.cookie.indexOf ("=") + 1;

var valueEnd =

document.cookie.indexOf (";");

if (valueEnd == -1)

valueEnd = document.cookie.length;

value = document.cookie.substring (

valueStart, valueEnd);

}
return Wert;

}

function writeValue (ident, value, lifetime) {

var now = new Date();
var timeout = new Date (

now.getTime() + lifetime);

document.cookie = ident + "=" + Wert

+ "; expires=" + timeout.toGMTString()
+ ";";

}

JavaScript
Dirk Husung

Cookies (2)

background image

function access() {

var lifetime = 1000*60*60*24*365;
var count = readValue();
var counter = 0;
if (count != "")

counter = parseInt (count);

if (document.cookie)

counter = counter + 1;

else

counter = 1;

writeValue ("Counter", counter, lifetime);
alert ("Dies ist Ihr " + counter

+ ". Besuch auf dieser Seite!");

}
//-->
</script>
</head><body onLoad="access()">
Inhalt der Datei
</body></html>

JavaScript
Dirk Husung

Cookies (3)

background image

15.3

Formulare

<html><head><title>Seitentitel</title>
<script language="JavaScript">
<!--
function checkForm() {

if (document.Formular.User.value == "") {

alert("Bitte Ihren Namen eingeben!");
document.Formular.Name.focus();
return false;

}
if (document.Formular.Mail.value == "") {

alert("Bitte Ihre eMail-Adresse eingeben!");
document.Formular.Mail.focus();
return false;

}
if (document.Formular.Alter.value == "") {

alert("Bitte Ihr Alter eingeben!");
document.Formular.Alter.focus();
return false;

}

if (document.Formular.Mail.value.indexOf(’@’)

== -1) {

alert("Keine E-Mail-Adresse!");
document.Formular.Mail.focus();
return false;

}

JavaScript
Dirk Husung

Formulare (1)

background image

with (document.Formular.Alter) {

var ok = true;
for(i=0; i < value.length; ++i)

if (

value.charAt(i) < "0"

|| value.charAt(i) > "9")

ok = false;

if(!ok) {

alert("Altersangabe keine Zahl!");
focus();
return false;

}

}

}
//-->
</script>
</head><body>
<form name="Formular"

action="mailto:husung@tu-harburg.de"
method=post
onSubmit="return checkForm()">

<pre>
Name:

<input type=text size=40 name="User">

E-Mail:

<input type=text size=40 name="Mail">

Alter:

<input type=text size=40 name="Alter">

Formular: <input type=submit value="Absenden">..
<input type=reset value="Loeschen">
</pre>
</form>
</body></html>

JavaScript
Dirk Husung

Formulare (2)


Document Outline


Wyszukiwarka

Podobne podstrony:
helion javascript dla webmaster Nieznany
JAVASCRIPT Kurs Java Script lekcje
kurs wyszukiwarki kurs wyszukiw Nieznany
Jak sie poruszac po naszym kurs Nieznany
kurs samokontroli umyslu metoda Nieznany
2 Kurs Cubase Cz 2id 20482 Nieznany (2)
kurswww 04ab javascript i67y762 Nieznany
ein kurs im flirten NMV3LDZUQDM Nieznany
kurs 3 id 254149 Nieznany
Kurs CorelDRAW 12 Czesc 1 Podst Nieznany
kurs programowania w javascript ZJP2R6YAGSKPQWSNDDGALSPMIOVH2OVSNHC2HKY

więcej podobnych podstron