Images unter JavaScript
Willemers Informatik-Ecke

Zeitgesteuerte Diashow

Die folgende Bildershow zeigt Bilder aus dem Garten von unserem Ferienhof. Falls Sie nun Lust auf Urlaub haben, können Sie sich unter der URL www.foerdeferien.de näher informieren. :-)

Wenn Sie auf dieser Seite gelandet sind, werden Sie sich vermutlich eher dafür interessieren, wie man solch eine Diashow mit JavaScript realisiert.

<img style="max-width:100%; height:auto;" name="anzeige"
    src="images/garten5.jpg">
<script>
var timeout = 2000;
var bild = new Array();
for (i=1; i<=5; i++) {
    bild[i] = new Image();
    bild[i].src="images/garten"+i+".jpg";
}
var bildindex = 1;
  
function dia() {
  if (bildindex > 5) bildindex = 1;
  document.anzeige.src = bild[bildindex].src;
  bildindex++;
  setTimeout("dia()",timeout);
}

setTimeout("dia()",timeout);
</script>

Bildergalerie mit Maussteuerung

Eine Bildergalerie ermöglicht es dem Betrachter, das Bild mithilfe der Maus zu wechseln. Dazu benötigen wir JavaScript und CSS.

Beginnen wir damit, das erste Bild und zwei Pfeile anzuzeigen.

<div style="display:flex; justify-content:center; align-items:center;">
<img style="max-width:100%; height:auto;"
   name="gallery" src="images/garten1.jpg">
<img style="left:0; position:absolute; cursor: pointer;"
    src="images/prev.png" alt="&lt;&lt;&lt;" id="prevBtn"/>
<img style="right:0; position:absolute; cursor:pointer;"
    src="images/next.png" alt=">>>" id="nextBtn"/>
Damit die Bilder ineinander fließen können, werden CSS-Styles verwendet. Damit JavaScript darauf zugreifen kann, erhält das Bild den Namen gallery und die Buttons die id prevBtn und nextBtn.

<<< >>>

Damit kommen wir bereits zu JavaScript. Die Bilder werden in einem Array gespeichert, das zu Anfang mit einer for-Schleife eingelesen wird. Die Bilder haben ähnliche Namen, um diese Schleife nicht zu kompliziert werden zu lassen.

var bilder = new Array();
var aktuell = 0;
var anzahl = 5;
// Einlesen der Bilder in das Bild-Array
for (i=0; i<anzahl; i++) {
   bilder[i] = new Image();
   bilder[i].src = "images/garten"+(i+1)+".jpg";
}
Nun muss für jeden Button eine Funktion geschrieben werden, die das nächste Bild in die Galerie schiebt und zwar eine für den linken und eine für den rechten Button.

Inhaltlich prüfen Sie, ob die Variable aktuell über den Rand des Arrays hinausgewachsen ist und setzen Sie auf der anderen Seite wieder auf. Anschließend wird das aktuelle Bild gewechselt, indem das Bild gallery nun eine neue src aus dem Array bekommt.

function onNextPic() {
    if (aktuell < (anzahl-1)) aktuell++; else aktuell=0;
    document.gallery.src = bilder[aktuell].src;
}

function onPrevPic() {
    if (aktuell > 0) aktuell--; else aktuell=anzahl-1;
    document.gallery.src = bilder[aktuell].src;
}
Die Funktionen werden über die id-Attribute der beiden Buttons mit deren onClick-Events verknüpft.
document.getElementById("nextBtn").onclick = onNextPic;
document.getElementById("prevBtn").onclick = onPrevPic;

Image-Wechsel bei Mausberührung

Diese Seite soll zeigen, wie mit Javascript ein Bild umgeschaltet werden kann, wenn man mit der Maus darüber fährt.

Zunächst werden zwei Bilder gebraucht. Das erste ist das Standardbild und das zweite soll erscheinen, wenn mit der Maus über das Maus gefahren wird. Beide Bilder müssen natürlich gleich groß sein.


Das Bild, wie es ohne Maus aussieht.

Das Bild, wie es mit Maus aussehen soll.
Das Bild soll in ein Adressfeld eingebettet werden, dass auf die Verlagsbestellseite für das abgebildete Buch zeigt.
<a href="http://www.galileocomputing.de/katalog/buecher/titel/gp/GPP-unixguru/titelID-769">
<img src="../unix/gurucover.gif" width="118" height="167" border=0 alt="Guru-Buch" name="bookPic">
</a>

Wichtig ist, dass dem img-Tag ein Name zugeordnet wird, in diesem Fall der Name bookPic. Im nächsten Schritt sollen dem Adress-Tag die Ereignisreaktionen zugewiesen werden. Die Ereignisse lauten OnMouseOver und OnMouseOut. In dem jeweiligen Fall wird dem img ein neues Bild untergeschoben werden. Der einfachste Ansatz wäre der folgende:

<a 
  href="http://www.galileocomputing.de/katalog/buecher/titel/gp/GPP-unixguru/titelID-769" 
  language="JavaScript"
  OnMouseOver="document['bookPic1'].src=../unix/gurubest.gif" 
  OnMouseOut="document['bookPic1'].src=../unix/gurucover.gif">
<img src="../unix/gurucover.gif" width=118 height=167 border=0 alt="Guru-Buch" name="bookPic1">
</a>

UNIX-Guru-Buch Auf der linken Seite ist die entsprechende Umsetzung und es funktioniert tatsächlich nicht. Zuerst müssen die Bilder, die beim Überstreifen der Maus angezeigt werden sollen, in einer Imagevariablen geladen werden.

Das Laden erfolgt irgendwo auf der Seite. Die eine Variable soll PicOhneMaus heißen und die andere PicMitMaus. Welche für was ist, darf sich der Leser aussuchen.

<SCRIPT LANGUAGE=JAVASCRIPT>
<!-- //
function ImgFromFile(img)
{
  var a=new Image();
  a.src=img;
  return a;
}

PicOhneMaus=ImgFromFile("../unix/gurucover.gif");
PicMitMaus=ImgFromFile("../unix/gurubest.gif");
// -->
</SCRIPT>
Die Funktion ImgFromFile erzeugt eine Variable vom Typ Image und weist ihrer Quelle (src) den Dateinamen zu, der der Funktion als Parameter übergeben wird. Direkt darunter ist die Vorbesetzung der beiden Variablen.
<a 
  href="http://www.galileocomputing.de/katalog/buecher/titel/gp/GPP-unixguru/titelID-769" 
  language="JavaScript"
  OnMouseOver="document['bookPic'].src=PicMitMaus.src"
  OnMouseOut="document['bookPic'].src=PicOhneMaus.src">
<img src="../unix/gurucover.gif" width=118 height=167 border=0 alt="Guru-Buch" name="bookPic">
</a>
In den Ereignissen für OnMouseOver und OnMouseOut wird nun einfach die Quelle der Imagevariablen verwendet. Und siehe da: es funktioniert:

Guru-Buch

Das Buch auf der linken Seite hat leider gar nichts mit Javascript zu tun. Hinzu kommt, dass es längst vergriffen ist. Das Wichtigste in Auszügen finden Sie aber auf diesen Seiten.