SELFHTML: JavaScript / Objektreferenz / images
Author: Redaktion SELFHTML, selfhtml81@selfhtml.org
Description: Welche Aufgaben, Eigenschaften und Methoden das images-Objekt in JavaScript hat.
Keywords: SELFHTML, JavaScript, Objekte, images, border, complete, height, hspace, length, lowsrc, name, src, vspace, width, handleEvent
Date: 2005-11-11T14:43:42+01:00

| # images
| images: Allgemeines zur Verwendung ### Eigenschaften: border (Rahmen) complete (Ladezustand) height (Höhe) hspace (horizontaler Abstand) length (Anzahl Grafiken) lowsrc (Vorschaugrafik) name (Name) src (Grafikdatei) vspace (vertikaler Abstand) width (Breite) ### Methode: handleEvent() (Ereignis verarbeiten)

## images: Allgemeines zur Verwendung

Mit dem Objekt `images`, das in der JavaScript-Objekthierarchie unterhalb des document-Objekts liegt, haben Sie Zugriff auf alle Grafiken, die in einer HTML-Datei definiert sind. Dabei können Sie auch vorhandene Grafiken dynamisch durch andere ersetzen.

Ein neues Grafik-Objekt wird automatisch erzeugt, wenn der Web-Browser eine Grafik in der HTML-Datei vorfindet.

Es stehen folgende Arten zur Verfügung, mit JavaScript eine bestimmte Grafik anzusprechen:

### Schema 1 / Beispiel 1:

    document.images[#].Eigenschaft
    document.images[#].Methode()

    Hoehe = document.images[0].height;

### Schema 2 / Beispiel 2:

    document.images.Bildname.Eigenschaft
    document.images.Bildname.Methode()

    Hoehe = document.images["Portrait"].height;

### Schema 3 / Beispiel 3:

    document.images["Bildname"].Eigenschaft
    document.images["Bildname"].Methode()

    Hoehe = document.images["Portrait"].height;

### Schema 4 / Beispiel 4:

    document.Bildname.Eigenschaft
    document.Bildname.Methode()

    Hoehe = document.Portrait.height;

### Erläuterung:

Grafikobjekte können Sie auf zwei Arten ansprechen:

- mit einer Indexnummer (wie in Schema 1 / Beispiel 1)
  Bei Verwendung von Indexnummern geben Sie `document.images` an und dahinter in eckigen Klammern, die wie vielte Grafik in der Datei Sie meinen. Jede Grafik, die in HTML mit dem `<img>`-Tag notiert wurde, zählt. Beachten Sie, dass der Zähler bei 0 beginnt, d.h. die erste Grafik sprechen Sie mit `images[0]` an, die zweite Grafik mit `images[1]` usw. Beim Zählen gilt die Reihenfolge, in der die `<img>`-Tags in der Datei notiert sind.
- mit dem Namen der Grafik (wie in Schema 2 / Beispiel 2)
  Dabei wird die Grafik als Unterobjekt von `document.images` angesprochen. Notieren Sie `document.images`, dahinter einen Punkt zum Ansprechen des Unterobjekts und schließlich den Namen, den Sie bei der Definition der Grafik im einleitenden `<img>`-Tag im Attribut `name` angegeben haben.
- mit dem Namen der Grafik als Indexnamen (wie in Schema 3 / Beispiel 3)
  Diese Art ist eine zu Schema 2 äquivalente Schreibweise, denn in JavaScript ist das Ansprechen von Unterobjekten über `objekt.unterobjekt` gleichwertig zu `objekt["unterobjekt"]`. Dabei notieren Sie wie beim Ansprechen mit Indexnummer hinter `document.images` eckige Klammern. Innerhalb der eckigen Klammern notieren Sie in Anführungszeichen den Namen, den Sie bei der Definition der Grafik im einleitenden `<img>`-Tag im Attribut `name` angegeben haben. Diese Schreibweise ist vor allem zum Zugriff auf Grafiken nützlich, deren Namen Sonderzeichen enthalten, welche den Zugriff nach Schema 2 unmöglich machen. Sie können zwischen den eckigen Klammern auch eine String-Variable notieren, die den Grafiknamen enthält.
- mit dem Namen der Grafik direkt (wie in Schema 4 / Beispiel 4)
  Dabei geben Sie mit `document.Bildname` den Namen an, den Sie bei der Definition der Grafik im einleitenden `<img>`-Tag im Attribut `name` angegeben haben.

Für Grafiken, die Sie nachträglich mit JavaScript anzeigen möchten, müssen Sie jedoch eigene neue Grafikobjekte in JavaScript erzeugen. Das ist besonders dann wichtig, wenn Sie Grafiken dynamisch durch andere Grafiken ersetzen wollen.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    Zweitbild = new Image(104, 102);
    Zweitbild.src = "christa.gif";
    function Bildwechsel () {
      document.images[0].src = Zweitbild.src;
    }
    </script>
    </head><body>
    <p>
    <a href="javascript:alert(Zweitbild.src)">Bildquelle ausgeben</a><br>
    <a href="javascript:alert(Zweitbild.height)">Bildhöhe ausgeben</a><br>
    <a href="javascript:alert(Zweitbild.width)">Bildbreite ausgeben</a>
    </p>
    <p>
    <img src="boris.gif" alt="Boris"><br>
    <a href="javascript:Bildwechsel()">Bild auswechseln</a>
    </p>
    </body></html>

### Erläuterung:

Ein neues Grafik-Objekt speichern Sie in einem selbst vergebenen Objektnamen, im obigen Beispiel in dem Namen `Zweitbild`. Hinter dem Namen folgt ein Gleichheitszeichen. Dahinter folgt das reservierte Wort `new` und der Aufruf der Objektfunktion `Image()` (erster Buchstabe großgeschrieben!).

Anschließend können Sie mit der neu erzeugten Instanz arbeiten. So können Sie der Instanz über die Objekteigenschaft `src` die Adresse einer Grafik zuordnen, im Beispiel die Datei `christa.gif`. Mit dieser Zuordnung lädt der Browser die Grafikdatei. Wenn die Datei auf einem WWW-Server liegt, kann die Übertragung je nach Größe der Grafikdatei einige Zeit dauert. Da das Script derweil weiterläuft, können Sie nicht sofort mit der Grafik arbeiten. Ob die Grafik bereits fertig geladen ist, können Sie über die Eigenschaft complete abfragen.

Die Funktion `Bildwechsel` im obigen Beispiel zeigt eine Anweisung, wie Sie dynamisch eine vorhandene Grafik ersetzen können. Als erste Grafik in der HTML-Datei wurde boris.gif eingebunden. Mit Hilfe der Eigenschaft src wird diese Grafik beim Klicken auf den Verweis durch christa.gif ersetzt.

Die Objektfunktion `Image()` kennt zwei optionale Parameter:
1. width Breite des Bildes
2. height Höhe des Bildes
Diese Parameter können Sie beim Erzeugen des `Image`-Objektes mit angeben. Zur Demonstration wird im Beispiel die Höhe und die Breite der Grafik mit ausgegeben.
Netscape 6.1 und Opera 5.12 interpretieren diese optionalen Parameter nicht und speichern jeweils den Wert 0 für die Höhe und Breite der Grafik.

### Beachten Sie:

Ein Anwendungsbeispiel für den Einsatz dynamisch austauschbarer Grafiken finden Sie in diesem Dokument: Dynamische grafische Buttons.

Gemäß dem HTML-spezifischen DOM greift z.B. `document.images.bildname` auf das `img`-Elementobjekt zu, mit der die Grafik eingebunden ist. Neben den hier beschriebenen Eigenschaften und Methoden können Sie auf diese Art weitere Eigenschaften und Methoden nutzen, die in der Referenz zum img-Elementobjekt aufgelistet sind.

## border

Speichert die Angabe zum Rahmen um eine Grafik, wie sie im attribut `border` im `<img>`-Tag möglich ist. Netscape speichert auch dann einen Wert, wenn die Angabe im HTML-Tag fehlt. Der Internet Explorer speichert nur dann einen Wert, wenn im HTML-Tag ein Wert angegeben ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <a href="javascript:alert(document.Anna.border)">
    <img src="anna.jpg" border="3" alt="Anna" name="Anna">
    </a>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik, die in einen Verweis eingeschlossen ist. Beim Anklicken des Verweises wird mit alert() der Wert ausgegeben, der im Attribut `border` angegeben ist.

### Beachten Sie:

Im Netscape 6.1 ist diese Angabe fehlerhaft und enthält als Rückgabewert `-1`.
Das Ändern der Eigenschaft `border` ist bislang nur im Internet Explorer möglich. Im Netscape 6.1 wird der bestehende Rahmen bei einer Änderung entfernt.

## complete

Speichert gemäß Netscapes JavaScript, ob der Versuch, eine Grafik zu laden, abgeschlossen wurde. Enthält den Wert `true`, wenn der Versuch abgeschlossen wurde, und den Wert `false`, wenn gerade versucht wird, die Grafik zu laden.die Grafik nicht oder nicht vollständig geladen ist. Speichert gemäß Microsofts JScript, ob eine Grafik vollständig geladen ist oder nicht. Enthält den Wert `true`, wenn die Grafik fertig geladen ist, und den Wert `false`, wenn die Grafik nicht oder nicht vollständig geladen ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function BildCheck () {
      var Status = "";
      for (i = 0; i < document.images.length; ++i) {
        if (document.images[i].complete == true) {
          Status = Status + "Grafik " + (i + 1) + " geladen\n";
        } else {
          Status = Status + "Grafik " + (i + 1) + " nicht geladen\n";
        }
      }
      Status = Status + document.images.length + " Grafiken im Dokument";
      alert(Status);
    }
    </script>
    </head><body>
    <img src="berthold.gif" alt="Berthold"><br>
    <img src="boris.gif" alt="Boris"><br>
    <img src="bernd.gif" alt="Bernd"><br>
    <a href="javascript:BildCheck()">Grafiken checken</a>
    </body></html>

### Erläuterung:

Das Beispiel enthält mehrere Grafiken und einen Verweis. Beim Anklicken des Verweises wird die Funktion `BildCheck()` aufgerufen, die im Dateikopf in einem Script-Bereich definiert ist. Diese Funktion ermittelt in einer for-Schleife für jede einzelne Grafik in der Datei (ermittelbar mit `document.images.length`), ob diese geladen ist (`if (document.images[i].complete == true)`) oder nicht. Das Ergebnis wird in einer Variablen `Status` gesammelt. Am Ende wird der Inhalt von `Status` mit alert() ausgegeben.

### Beachten Sie:

Die Eigenschaft `complete` wird von den Browsern unterschiedlich interpretiert, je nachdem, ob sie der Definition von Netscape oder Microsoft folgen. Netscape ab Version 6, Mozilla Firefox und Konqueror folgen der Netscape-Definition. Obwohl im vorliegenden Beispiel zwei Grafiken nicht geladen werden können, hat die Eigenschaft `complete` für alle Grafiken den Wert `true`. Die älteren Netscape-Browser bis zur Version 4 geben für alle Grafiken den Wert `false` an. Der Internet Explorer und Opera folgen der Microsoft-Definition: Die korrekt geladene Grafik hat den `complete`-Wert `true`, die anderen beiden nicht vorhandenen Grafiken den Wert `false`.

## height

Speichert die Angabe zur Höhe eine Grafik, wie sie mit dem Attribut `height` im `<img>`-Tag möglich ist. Es wird auch dann ein Wert gespeichert, wenn die Angabe im HTML-Tag fehlt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <img src="christa.gif" name="Christa" alt="Christa">
    <script type="text/javascript">
    document.write(document.Christa.name + "<br>");
    document.write(document.Christa.width + " x " + document.Christa.height + " Pixel");
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik. Unterhalb davon ist ein Script-Bereich notiert. Darin wird mit document.write() der Bildname und die Angaben zu Breite und Höhe der Grafik geschrieben.

### Beachten Sie:

Im Netscape 6.1, Safari und in Konqueror wird in der Eigenschaft `height` der Wert `0` gespeichert, wenn das `height`-Attribut im HTML-Tag fehlt.
Das Ändern der Eigenschaft `height` ist bislang nur im Internet Explorer und im Netscape 6.1 möglich.

## hspace

Speichert die Angabe zum horizontalen Abstand zwischen einer Grafik und ihren nebenliegenden Elementen, wie sie mit dem Attribut `hspace` im `<img>`-Tag möglich ist. Wenn die Angabe im HTML-Tag fehlt, hat die Objekteigenschaft `hspace` den Wert 0.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <a href="javascript:alert(document.Dorian.hspace)">
    <img src="dorian.jpg" hspace="30" name="Dorian" alt="Dorian">
    </a>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik, die in einen Verweis eingeschlossen ist. Beim Anklicken des Verweises wird mit alert() der Wert ausgegeben, der im Attribut `hspace` angegeben ist.

### Beachten Sie:

Netscape 6.1 und Opera 5.12 interpretieren diese Angabe fehlerhaft. Im Netscape 6.1 ist stets `-1` und in Opera 5.12 `0` gespeichert.
Das Ändern der Eigenschaft `hspace` ist bislang nur im Internet Explorer möglich. Im Netscape 6.1 wird der horizontale Abstand entfernt.

## length

Speichert die Anzahl der Grafiken in einer Datei.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <img src="anna.jpg" alt="Anna"><br>
    <img src="dorian.gif" alt="Dorian"><br>
    <img src="christa.gif" alt="Christa"><br>
    <script type="text/javascript">
    document.write("<hr>Seite enthält " + document.images.length + " Grafiken");
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält mehrere Grafiken. Am Ende steht ein Script-Bereich. Darin wird mit document.write() die Anzahl der Grafiken in die Datei geschrieben.

## lowsrc

Speichert die Angabe zur Vorabgrafik, wie sie mit dem Attribut `lowsrc` im `<img>`-Tag möglich ist. Wenn die Angabe im HTML-Tag fehlt, enthält die Objekteigenschaft `lowsrc` keinen Wert. Wenn ein `lowsrc`-Attribut angegeben ist, enthält die Objekteigenschaft bei Netscape der vollständige URI, beim Internet Explorer, Netscape 6 und Opera dagegen genau die Angabe, die in der Wertzuweisung an das HTML-Attribut steht.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <a href="javascript:alert(document.images[0].lowsrc)">
    <img src="xanta.jpg" lowsrc="xantalow.jpg" alt="Fr&auml;aenzschen und Franz">
    </a>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik, die mit dem `lowsrc`-Attribut eine vorab anzuzeigende Grafik definiert, und die in einen Verweis eingeschlossen ist. Beim Anklicken des Verweises wird mit alert() der Wert ausgegeben, der im Attribut `lowsrc` gespeichert ist.

## name

Speichert den Namen einer Grafik, wie er mit dem Attribut `name` im `<img>`-Tag möglich ist. Wenn die Angabe im HTML-Tag fehlt, enthält die Objekteigenschaft `name` keinen Wert.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <img name="Anna" src="anna.jpg" width="271" height="265" border="0" alt="">
    <script type="text/javascript">
    document.write("<br>" + document.images[0].name);
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik. Unterhalb davon ist ein Script-Bereich notiert. Darin wird mit document.write() der Bildname der Grafik in die Datei geschrieben.

### Beachten Sie:

Im Netscape 6.1 können Sie die Eigenschaft `name` auch ändern.

## src

Speichert die Angabe, welche Grafikdatei angezeigt wird, wie sie mit dem Attribut `src` im `<img>`-Tag möglich ist. Diese Eigenschaft lässt sich ändern. Dadurch können Sie Grafiken dynamisch durch andere ersetzen. Beachten Sie jedoch, dass Breite und Höhe ursprünglich in HTML notierten Grafik für alle dynamisch folgenden Grafiken übernommen werden. Um verzerrungsfreie Effekte zu erzielen, sollten also alle Grafiken, die einander dynamisch ersetzen, die gleiche Höhe und Breite haben.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <img src="hans.gif" width="400" height="300" alt="Hans">
    <script type="text/javascript">
    var b = new Array();
    b[0] = new Image(); b[0].src = "holger.gif";
    b[1] = new Image(); b[1].src = "hilmar.gif";
    b[2] = new Image(); b[2].src = "heiner.gif";
    b[3] = new Image(); b[3].src = "hans.gif";
    var i = 0;
    function Animation () {
      if (i > 3)
        i = 0;
      document.images[0].src = b[i].src;
      i = i + 1;
      window.setTimeout("Animation()", 1000);
    }

    window.setTimeout("Animation()", 1000);
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik namens `hans.gif`. Unterhalb davon ist ein Script-Bereich notiert, der dafür sorgt, dass die Grafik sich automatisch jede Sekunde in eine andere Grafik verwandelt. Dazu wird zunächst ein Array namens `b` notiert. Danach werden vier Elemente des Arrays `b` bestimmt. In allen vier Fällen handelt es sich um neue Grafikobjekte. Jedem der neuen Grafikobjekte wird mit der Eigenschaft `src` eine Grafikdatei zugewiesen. Beachten Sie, dass auch die Datei `hans.gif` wieder dabei ist, obwohl diese bereits angezeigt wird. Da sie in die Animation integriert werden soll, muss für sie aber trotzdem noch mal ein eigenes neues Grafikobjekt erzeugt werden.

Innerhalb der Funktion `Animation()`, die unterhalb der Funktion zum ersten Mal aufgerufen wird. wird das jeweils aktuelle Bild durch ein anderes ersetzt. Das geschieht durch Zuweisung von `b[i].src` an `document.images[0].src`. Da `b[i]` abhängig von der Variablen `i` ist, die bei jedem Funktionsaufruf verändert wird, wird jedes mal ein anderes der vier Bilder angezeigt. Am Ende ruft sich die Funktion `Animation()` selbst wieder auf. So entsteht der Endlos-Effekt. Der Aufruf ist in einen setTimeout()-Aufruf eingebunden, der den nächsten Aufruf jeweils um 1000 Millisekunden, also um eine Sekunde, verzögert.

### Beachten Sie:

Im Internet Explorer und im Netscape 6 können Sie auch unterschiedlich große Grafiken verwenden. In diesem Fall sollten Sie die Angaben zur Größe der Grafik weglassen bzw. für die Höhe die Eigenschaft height und für die Weite die Eigenschaft width dynamisch ändern.

## vspace

Speichert die Angabe zum vertikalen Abstand zwischen einer Grafik und den Elementen oberhalb und unterhalb davon, wie sie mit dem Attribut `vspace` im `<img>`-Tag möglich ist. Wenn die Angabe im HTML-Tag fehlt, hat die Objekteigenschaft `vspace` den Wert 0.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <a href="javascript:alert(document.Dorian.vspace)">
    <img src="dorian.jpg" vspace="8" name="Dorian" alt="Dorian">
    </a>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik, die in einen Verweis eingeschlossen ist. Beim Anklicken des Verweises wird mit alert() der Wert ausgegeben, der im Attribut `vspace` notiert ist.

### Beachten Sie:

Netscape 6.1 und Opera 5.12 interpretieren diese Angabe fehlerhaft. Im Netscape 6.1 ist stets `-1` und in Opera 5.12 `0` gespeichert.
Das Ändern der Eigenschaft `vspace` ist bislang nur im Internet Explorer möglich. Im Netscape 6.1 wird der vertikale Abstand entfernt.

## width

Speichert die Angabe zur Breite eine Grafik, wie sie mit dem Attribut `width` im `<img>`-Tag möglich ist. Es wird auch dann ein Wert gespeichert, wenn die Angabe im HTML-Tag fehlt.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <img src="christa.jpg" name="Christa" alt="Christa">
    <script type="text/javascript">
    document.write(document.Christa.name + "<br>");
    document.write(document.Christa.width + " x " + document.Christa.height + " Pixel");
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält eine Grafik. Unterhalb davon ist ein Script-Bereich notiert. Darin wird mit document.write() der Bildname und die Angaben zu Breite und Höhe der Grafik geschrieben.

### Beachten Sie:

Im Netscape 6.1 und Konqueror 3.1 wird in der Eigenschaft `width` der Wert `0` gespeichert, wenn diese Angabe im HTML-Tag fehlt. Konqueror 3.4 zeigt diese Einschränkung nicht mehr.
Das Ändern der Eigenschaft `width` ist bislang nur im Internet Explorer und im Netscape 6.1 möglich.

## handleEvent()

Übergibt ein Ereignis an ein Element, das in der Lage ist, auf das Ereignis zu reagieren. Funktioniert genau so wie handleEvent() beim window-Objekt (nähere Informationen siehe dort).

| embeds
| options

© 2007 Impressum