dameiers: Lauflicht durch JavaScript

Hallo beschäftige mich seit kurzem mit JS und habe nun ein Problem bei dem ich Hilfe bräuchte.
Ich möchte eine Art Lauflicht durch austauschen von 2 unterschiedlichen Grafiken erzeugen!! Bisher hab ich folgendes:

bildaus = new Image();
bildaus.src = "images/k_gelb.jpg";

bildan = new Image();
bildan.src = "images/k_rot.jpg";

var stelle = 0;
var timer = 0;

function blink()
{
  for(var i=0; i<4; i++)
  {
    timer = setTimeout('faerbe('+i+')', 2000);
    //alert();
  }
}

function faerbe(pos)
{
  document.images[pos].src = bildan.src;
  clearTimeout(timer);
}

Gedacht habe ich mir, dass ich bei jedem Schleifendurchlauf (in der Funktion blink()) durch setTimeout nach einer gewissen Zeit die Funktion faerbe() aufrufe und so jedes Bild nacheinander mit dem Zeitabstand von SetTimeout färbe.

Allerdings läuft lediglich einmal der Timer ab und dann werden sofort alle grafiken "gefärbt"

Ich weis nicht wirklich was ich falssch mache und wäre um Hilfe sehr dankbar!!

  1. Hallo dameiers,

    Ich weis nicht wirklich was ich falssch mache und wäre um Hilfe sehr dankbar!!

    du hast setTimeout nicht richtig verstanden. setTiemout ruft eine Funktion zeitverzögert auf. Der Programmcode unter setTimeout wird aber sofort abgearbeitet. Für dein Problem wäre folgende Konstruktion möglich:

      
    function machan() {  
     ....  
     window.setTimeout("machaus()",1000);  
    }  
      
    function machaus() {  
     ....  
     window.setTimeout("machan()",1000);  
    }  
    
    

    Hier rufen sich die Funktionen machan und machaus gegenseitig im Sekundentakt auf. Du musst die Aktion nur noch durch den Aufruf einer der beiden Funktionen starten.

    Gruß, Jürgen