mrjerk: Slideshow

Beitrag lesen

Hallo,

hier wird doch geprüft, ob counter kleiner ist, als die Anzahl der Bilder?!
Und wenn wenn dem so ist, wird der Fade mit dem nächsten Bild ausgeführt.

Genau. Das bedeutet, wenn alle Bilder durch gefaded sind, hört die Animation auf, weil counter nicht mehr kleiner ist als die Anzahl der Bilder.
Das willst Du aber ja nicht. Du willst ja, das er wieder von vorne anfängt beim ersten Bild, also bei counter = 0.

Du hast jetzt folgendes vorgeschlagen:
Wenn Counter größer oder gleich die Bilderanzahl, soll er counter auf '0' setzen. Anschließend wird der Fade ausgeführt. Wozu dann noch den counter prüfen?

if (counter >= imgs.length)
{
   counter = 0;
}
fade();

Würdest Du den Counter nicht prüfen, also so:

counter = 0;
fade();

dann würde er bei jedem Fade den counter wieder zurücksetzen, also immer wieder das gleiche (nämlich das erste) Bild benutzen.

Du willst aber, dass der Counter in einem einzigen Spezialfall zurückgesetzt wird, nämlich, wenn Du am Ende angekommen bist, also counter den Wert von imgs.length hat.

Dann hast Du geschrieben, ich soll das ganze möglichst weit unten auf der Seite mit fade(1000); starten. Was genau bewirkt diese Funktion?
Bisher starte ich das ganze mit next();

fade(step) und next() rufen sich ja gegenseitig auf, von daher dürfte es egal sein, was Du aufrufst - next geht genauso.

Es ist nur wichtig, dass Du das ganze erst loslaufen lässt, wenn der Browser das komplette Dokument geladen hat. Denn sonst könnte es ja sein, dass er nicht alle Bilder findet, die Du in Deiner fade- und next-Funktion holst (mit getElementById(...).getElementsByTagName(...)).

Um dies sicher zu stellen gibt es zwei möglichkeiten:

  • Nutzen des "onload"-Attributes des Body-Tags
      <body onload="next();">
  • Ausführen des Scriptes möglichst weit unten auf der Seite, wo Du sicher sein kannst, dass der HTML-Code für Deine Bilder schon komplett geladen wurde.

Viel Erfolg,
Jörg