Rolf b: Überblendung als Endlosschleife?

Beitrag lesen

Vorbemerkung 1: alpha(opacity=n) ist uralt, das kansnt Du weglassen. Ab IE9 reicht opacity.

Vorbemerkung 2: Mache step NICHT zu einer globalen Variable. Man soll in JavaScript auf Globals wann immer möglich verzichten. Eine lokale Variable ist für deine Aufgabe. Eine globale Variable brauchst Du nur dann, wenn Du einen Mechanismus benötigst, um die Animation von außerhalb zu stoppen. WENN Du globale Variablen brauchst, dann solltest Du EIN globales Objekt erzeugen, z.B. "InselFisch = {};", und in diesem Objekt alles eintüten was Du an Globalitäten brauchst. Damit hast Du einen eindeutigen Container, der nur Dir gehört und Du läufst nicht Gefahr, dass globale Daten zweier Scripte miteinander kollidieren.

Vorbemerkung 3: Identifiziere Dein Image nicht per document.getElementsByTagName("img"). Der Zugriff auf das Element [1] des resultierenden Arrays ist eine magische Zahl und fehleranfällig. Gib dem Image eine ID und benutze getElementById(). Oder gib allen Images, deren Transparenz pulsieren soll, eine Klasse, benutze getElementsByClassName und laufe über alle Elemente des resultierenden Arrays.

So. Nun zu deinem Wunsch :)

setTimeout() "hinterlegt" sozusagen einen Funktionsaufruf, der nach Ablauf der genannten Zeit automatisch vom Brauser aufgerufen wird. Der Wert von step aus dem n-ten Aufruf wird dabei mit gespeichert und dem (n+1)-ten Aufruf übergeben. Die Fassung, die Du gepostet hast, ruft für step>100 keinen setTimeout mehr auf und beendet damit die Animation.

Um eine Endlosschleife zu erzeugen, empfehle ich Dir

step = step % 100 + 2;
window.setTimeout(function () { fadeOddballs(step); }, 100);

D.h. kein IF mehr und dafür beim Erhöhen von step durch Modulo 100 dafür sorgen, dass die Variable die Folge 2, 4, ..., 96, 98, 100, 2, 4, ... , 96, 98, 100, 2, 4, ... , durchläuft.

Wenn Du die Opacity auf- und ablaufen lassen möchtest, brauchst Du einen zweiten Parameter der die aktuelle Laufrichtung angibt und musst die Änderung von step entsprechend anpassen. Das überlasse ich Dir als Übung :D

Gruß Rolf