# Objektunabhängige Funktionen

Allgemeines zu objektunabhängigen Funktionen
decodeURI() (kodierten URI dekodieren)
decodeURIComponent() (kodierten URI dekodieren - II)
encodeURI() (URI kodieren)
encodeURIComponent() (URI kodieren - II)
eval() (Ausdruck interpretieren)
escape() (ASCII-Zeichen in Zahlen umwandeln)
isFinite() (auf numerischen Wertebereich prüfen)
isNaN() (auf numerischen Wert prüfen)
parseFloat() (in Kommazahl umwandeln)
parseInt() (in Ganzzahl umwandeln)
Number() (auf numerischen Wert prüfen)
String() (in Zeichenkette umwandeln)
unescape() (Zahlen in ASCII-Zeichen umwandeln)

## Allgemeines zu objektunabhängigen Funktionen

Objektunabhängige Funktionen sind im Gegensatz zu selbst definierten Funktionen in JavaScript bereits vordefiniert. Das heißt, Sie können diese Funktionen jederzeit aufrufen.

Es handelt sich um bestimmte, zum Teil mächtige JavaScript-Befehle, die in keines der JavaScript-Objekte passen und deshalb nicht der objektorientierten Richtung von JavaScript folgen.

## decodeURI()

Dekodiert einen URI, der mit encodeURI() kodiert wurde.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    Adresse = "http://www.example.org/cgi-bin/script.pl?Text=der übergebene Text&Name=Stefan Münz";
    document.write("<b>Adresse unkodiert:<\/b> " + Adresse + "<br>");
    Adresse = encodeURI(Adresse);
    document.write("<b>Adresse kodiert:<\/b> " + Adresse + "<br>");
    Adresse = decodeURI(Adresse);
    document.write("<b>Adresse wieder dekodiert:<\/b> " + Adresse + "<br>");
    </script>
    </body></html>

### Erläuterung:

Das Beispiel definiert eine typische Adresse mit Übergabeparametern an ein Script. Zunächst schreibt es die Adresse wie sie ist ins Dokument. Dann wird die Adresse mit `encodeURI()` behandelt und zur Kontrolle ausgegeben. Schließlich wird nach dem gleichen Schema `decodeURI()` angewendet und die Adresse nochmals ausgegeben.

## decodeURIComponent()

Wie decodeURI(). Sollte aber nur auf Adressen oder Adressteile angewendet werden, die mit mit encodeURIComponent() kodiert wurden.

## encodeURI()

Verschlüsselt einen URI so, dass alle Sonderzeichen in ASCII-Zeichensequenzen umgewandelt werden. Besonders wichtig ist dies für Aufrufe von CGI-Scripts mit Parametern. Denn HTML 4.0 verlangt beispielsweise, im `href`-Attribut von Verweisen encodierte Zeichenketten zu verwenden, sofern die Adressen Sonderzeichen enthalten.

Kodiert alle außer den folgenden Zeichen:
`0` bis `9`
`A` bis `Z`
`a` bis `z`
`- _ . ! ~ * ' ( )`
`, / ? : @ & = + $`

Kodiert werden also beispielsweise deutsche Umlaute und Sonderzeichen, auch Leerzeichen, eckige und geschweifte Klammern usw.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var Adresse =
    encodeURI("http://www.example.org/cgi-bin/script.pl?Text=der übergebene Text&Name=Stefan Münz");
    document.write('<a href="' + Adresse + '">Verweis<\/a>');
    </script>
    </body></html>

### Erläuterung:

Das Beispiel ruft die Funktion `encodeURI()` auf und übergibt ihr einen typischen URI mit Parametern. Der Rückgabewert der Funktion wird in der Variablen `Adresse` gespeichert. Anschließend wird dynamisch ein Verweis in die Datei geschrieben, wobei die zuvor encodierte Adresse ins `href`-Attribut eingefügt wird.

## encodeURIComponent()

Wie encodeURI(), aber mit dem Unterschied, dass auch folgende Zeichen kodiert werden:
`, / ? : @ & = + $`

## escape()

Wandelt Steuersequenzen (Steuerzeichen mit den ASCII-Werten 0 bis 31) und Sonderzeichen wie z.B. deutsche Umlaute in ihre ASCII-Zahlenwerte um, und zwar in hexadezimaler Form. Setzt vor jeden Wert das Trennzeichen "%" und gibt die so erzeugte Zeichenkette zurück. Bei anderen Zeichen als Steuer- und Sonderzeichen gibt `escape()` die Zeichen unverändert zurück. Es handelt sich also um eine Funktion, die Steuer- und Sonderzeichen aus Werten entfernt und in Zeichenfolgen übersetzt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var Beispiel = "\n\r\t";
    document.write(escape(Beispiel));
    </script></body></html>

### Erläuterung:

Das Beispiel definiert eine Variable `Beispiel`, der verschiedene Steuerzeichen zugewiesen werden (siehe dazu den Abschnitt über Steuerzeichen). Diese Variable wird der Funktion `escape()` als Parameter übergeben. Das Ergebnis wird zur Kontrolle ins Dokumentfenster geschrieben.

### Beachten Sie:

Diese Funktion wird in Zukunft durch encodeURI() ersetzt!

## eval()

Interpretiert ein zu übergebendes Argument und gibt das Ergebnis zurück.
Wenn das übergebene Argument als Rechenoperation interpretierbar ist, wird die Operation berechnet und das Ergebnis zurückgegeben. Dabei sind auch komplexe Rechenausdrücke mit Klammerung möglich. Diese Funktionalität ist sehr praktisch, um als Zeichenketten notierte Rechenausdrücke mit einem einzigen Befehl errechnen zu lassen.
Wenn das übergebene Argument als Objekt oder Objekteigenschaft interpretiert werden kann, wird das Objekt bzw. die Objekteigenschaft zurückgegeben. Dies ist wichtig, wenn eine Zeichenkette (z.B. ein Formularfeldinhalt oder ein einer Funktion übergebener Parameter) als Objekt interpretiert werden soll.
Erzeugt eine Fehlermeldung, wenn der übergebene Ausdruck nicht interpretierbar ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <form action="">
    <input type="name" size="30" name="Eingabe">
    <input type="button" value="Berechnen" onclick="alert(eval(this.form.Eingabe.value))">
    </form>
    </body></html>

### Erläuterung:

Das Beispiel enthält ein Formular mit einem Eingabefeld und einem Button. In dem Eingabefeld kann der Anwender eine Rechenoperation eingeben, zum Beispiel `1+2+3+4+5+6+7+8+9` oder `12.78*5.13`. Beim Klick auf den Button wird der Wert aus dem Formular mit `eval()` berechnet und in einem Meldungsfenster ausgegeben.

## isFinite()

Ermittelt, ob ein Wert sich innerhalb des Zahlenbereichs befindet, den JavaScript verarbeiten kann, also aus Sicht von JavaScript eine gültige Zahl darstellt.
Gibt `true` zurück, wenn der Wert eine gültige Zahl ist, und `false`, wenn es keine Zahl ist bzw. die Zahl sich außerhalb des Wertebereiches von JavaScript befindet. Sowohl ganze Zahlen als auch Kommazahlen werden als gültige Zahlen erkannt. Bei Kommazahlen muss das Dezimalzeichen ein Punkt sein.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    var Zahl = Number.MAX_VALUE;
    if (!isFinite(Zahl * 2))
      alert("Die Zahl ist nicht zu verarbeiten.");
    </script>
    </head><body>
    </body></html>

### Erläuterung:

Das Beispiel definiert eine Variable Zahl der als Wert Number.MAX_VALUE die größte mögliche Zahl zugewiesen wird. In der anschließenden Abfrage wird geprüft, ob das Produkt dieser Zahl mit 2 sich innerhalb des verarbeitbaren Zahlenbereiches befindet. Ist dies nicht der Fall, so wird eine entsprechende Warnmeldung ausgegeben.

## isNaN()

Ermittelt, ob ein zu übergebender Wert eine ungültige Zahl ist (NaN = Not a Number).
Gibt `true` zurück, wenn der Wert keine Zahl ist, und `false`, wenn es eine Zahl ist. Sowohl ganze Zahlen als auch Kommazahlen werden als gültige Zahlen anerkannt. Bei Kommazahlen muss das Dezimalzeichen ein Punkt sein.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function CheckZahl (Wert) {
      if (isNaN(Wert)) {
        alert(Wert + " ist keine Zahl!");
      }
    }
    </script>
    </head><body>
    <form action="">
    <input type="name" size="30" name="Eingabe">
    <input type="button" value="Check"
    onclick="CheckZahl(this.form.Eingabe.value)">
    </form>
    </body></html>

### Erläuterung:

Das Beispiel enthält ein Formular mit einem Eingabefeld und einem Button. Beim Klick auf den Button wird die Funktion `CheckZahl()` aufgerufen. Der Funktion wird der Wert aus dem Eingabefeld des Formulars als Parameter übergeben. `CheckZahl()` prüft, ob der übergebene Wert eine Zahl ist. Dazu wird `isNaN()` auf den übergebenen Wert angewendet. Wenn es keine Zahl ist, wird eine Fehlermeldung ausgegeben.

### Beachten Sie:

Für diese Methode sind auch Zahlen, die außerhalb des Zahlenbereichs von JavaScript liegen, gültige Zahlen. Zur Überprüfung der Größe von Zahlen müssen Sie die Methode isFinite() verwenden.

## parseFloat()

Wandelt eine zu übergebende Zeichenkette in eine Zahl um und gibt diese als numerischen Wert zurück. Wenn sich die Zahl als Kommazahl interpretieren lässt, wird dies berücksichtigt. Als Dezimalzeichen wird jedoch nur der Punkt interpretiert. Sinnvoll, um z.B. Anwendereingaben in Zahlen umzuwandeln, mit denen man anschließend rechnen kann.
Gibt `NaN` (Not a Number) zurück, wenn die Zeichenkette mit Zeichen beginnt, die sich nicht als Teil einer Zahl interpretieren lassen.
Wenn die Zeichenkette weiter hinten ungültige Zeichen enthält, wird die Zahl bis zum ersten ungültigen Zeichen interpretiert und der interpretierte Teil zurückgegeben.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var Elemente = new Array("18", "18.1", "18,9", "abc", "1a");
    document.write("<h1>Anwendung von <i>parseFloat()<\/i><\/h1>");
    for (var i = 0; i < Elemente.length; ++i)
      document.write(Elemente[i] + " = <b> " + parseFloat(Elemente[i]) + "<\/b><br>");
    </script></body></html>

### Erläuterung:

Das Beispiel definiert einen Array mit verschiedenen Elementen, die teils ganze, teils Kommazahlen, teils gar keine Zahlen darstellen. Dann werden in einer for-Schleife alle Elemente des Arrays mit der write()-Methode dynamisch in die Datei geschrieben. Dabei wird jedoch die Funktion `parseFloat()` auf das jeweilige Array-Element angewendet.

## parseInt()

Wandelt eine zu übergebende Zeichenkette in eine Ganzzahl um und gibt diese als Ergebnis zurück. Sinnvoll, um z.B. Anwendereingaben in Zahlen umzuwandeln, mit denen man anschließend rechnen kann.
Gibt `NaN` (Not a Number) zurück, wenn die Zeichenkette mit Zeichen beginnt, die sich nicht als Teil einer Zahl interpretieren lassen.
Wenn die Zeichenkette weiter hinten ungültige Zeichen enthält, wird die Zahl bis zum ersten ungültigen Zeichen interpretiert und der interpretierte Teil zurückgegeben. Das gilt bei `parseInt()` auch für den Punkt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var Elemente = new Array("18", "18.1", "18.9", "abc", "1a");
    document.write("<h1>Anwendung von <i>parseInt()<\/i><\/h1>");
    for (var i = 0; i < Elemente.length; ++i)
      document.write(Elemente[i] + " = <b> " + parseInt(Elemente[i]) + "<\/b><br>");
    </script></body></html>

### Erläuterung:

Das Beispiel definiert einen Array mit verschiedenen Elementen, die teils ganze, teils Kommazahlen, teils gar keine Zahlen darstellen. Dann werden in einer for-Schleife alle Elemente des Arrays mit der write()-Methode dynamisch in die Datei geschrieben. Dabei wird jedoch die Funktion `parseInt()` auf das jeweilige Array-Element angewendet.

### Beachten Sie:

Die Methode `parseInt()` erlaubt einen zweiten, optionalen Parameter radix. Dieser Parameter enthält die Basis des verwendeten Zahlensystems. Der Aufruf `parseInt(string, radix)` ermittelt aus dem String, der eine Zahl eines anderen Zahlensystems darstellt, die dazugehörige Dezimalzahl. Die Methode `parseInt()` kann damit gleichzeitig als Umrechner von Zahlen anderer Zahlensysteme in das dezimale Zahlensystem verwendet werden. So ergibt z.B. der Aufruf `parseInt("11111", 2)` die Zahl 31. Der optionale Parameter kann Werte zwischen 2 und 36 annehmen. Mit der Methode toString() des Number-Objektes können Sie umgekehrt Dezimalzahlen in Zeichenketten von Zahlen anderer Zahlensysteme konvertieren. Dabei ist - im Gegensatz zur Methode `parseInt()` - auch das Umwandeln von Kommazahlen möglich.

Besonders im Bereich der Datumsberechnung werden häufig Zahlen mit führender Null benutzt. Einfache Aufgaben wie `alert(08 * 60)` liefern dann scheinbar falsche Ergebnisse oder gar Fehlermeldungen. Des Rätsels Lösung dafür ist, dass JavaScript Zahlen mit führender 0 als Oktalzahlen interpretiert, nicht als Dezimalzahlen. Mit einer Anweisung wie `alert(parseInt("08", 10) * 60)` können Sie das Problem vermeiden und erzwingen, dass der Wert dezimal interpretiert wird

## Number()

Konvertiert den Inhalt eines Objekts in eine Zahl und gibt die Zahl zurück. Erwartet den Objektinhalt als Parameter. Wenn sich der übergebene Parameter nicht als Zahl interpretieren lässt, wird `NaN` (Not a Number) zurückgegeben.
Vor allem brauchbar in Verbindung mit dem Date-Objekt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var d = new Date("March 15, 1998 08:27:00");
    document.write(Number(d));
    </script></body></html>

### Erläuterung:

Das Beispiel definiert ein neues Datumobjekt und initialisiert es mit einem Wert im GMT-Format. Das Datumobjekt wird in der Variablen `d` gespeichert. Anschließend wird diese Variable der Funktion `Number()` als Parameter übergeben. Die Funktion `Number()` hab dabei die gleiche Wirkung wie die Objektmethode `d.getTime()`, d.h. es wird die Anzahl Millisekunden zwischen dem 1.1.1970 und dem in `d` gespeicherten Zeitpunkt errechnet. Im Beispiel wird das Ergebnis zur Kontrolle in die Datei geschrieben.

## String()

Konvertiert den Inhalt eines Objekts in eine Zeichenkette und gibt die Zeichenkette zurück.
Vor allem brauchbar in Verbindung mit dem Date-Objekt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var d = new Date();
    document.write(String(d));
    </script></body></html>

### Erläuterung:

Das Beispiel definiert ein neues Datumobjekt mit dem aktuellen Zeitpunkt. Das Datumobjekt wird in der Variablen `d` gespeichert. Anschließend wird diese Variable der Funktion `String()` als Parameter übergeben. Die Funktion erzeugt daraus eine Zeichenkette, die den gespeicherten Zeitpunkt im GMT-Format darstellt. Im Beispiel wird das Ergebnis zur Kontrolle in die Datei geschrieben.

## unescape()

Wandelt alle Zeichen der zu übergebenden Zeichenkette in normale ASCII-Zeichen um und gibt die so erzeugte Zeichenkette zurück. Die zu übergebende Zeichenkette muss für jedes umzuwandelnde Zeichen ein Prozentzeichen (%) und den Hexadezimalwert des Zeichens in der ASCII-Zeichentabelle enthalten.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    var Beispiel = "%53%74%65%66%61%6E";
    document.write(unescape(Beispiel));
    </script></body></html>

### Erläuterung:

Das Beispiel definiert eine Variable namens `Beispiel` und weist ihr eine Zeichenkette zu. Die Zeichenkette besteht aus einer Reihenfolge von hexadezimal kodierten Zeichen. Jedes Zeichen beginnt mit einem Prozentzeichen, dahinter folgt der Hexadezimalwert des Zeichens. Diese Variable wird der Funktion `unescape()` als Parameter übergeben. Das Ergebnis wird zur Kontrolle in die Datei geschrieben. Im Beispiel wird das Wort "Stefan" erzeugt.

### Beachten Sie:

Diese Funktion wird in Zukunft durch decodeURI() ersetzt!

| Zwei Frames gleichzeitig ändern
| String

© 2007 Impressum