Struppi: setTimeout wird nicht ausgführt

Beitrag lesen

Hey Leute!
Also ich habe folgenden Code (ist eine Beispielfunktion zum einfachen Verständnis). Die Funktion sollte bei Aufruf mit steps = 0 von 100 bis 1 zählen und dieser Vorgang sollte 99 Sekunden dauern.

function fadeOut( iid, bh, steps)
{
if( steps == 0 ) { steps = 100; }

  if( steps > 1)  
  {  
  	steps--;  
  	setTimeout(function(){fadeOut(iid, bh, steps);},1000);  
  	  
  }	  

}


>   
> Das Problem an der ganzen Sache ist einfach, dass die Funktion nur einmal aufgerufen wird. Das setTimeout spricht einfach nicht an.  
  
Wenn du sowieso schon ein closure benutzt, wäre es eleganter hier auch ein's für den Timer zu bauen, das spart auch die Parameter. Allerdings weiß ich nicht, was die Parameter machen.  
  
  

> Ich hab es auch schon so versucht:  
> ~~~javascript

			toDo = 'fadeOut("'+ iid +'", '+ bh +', '+ steps +')';  

> 			window.setTimeout(toDo, 100);

Js das ist ein Versuch. Nur darfst du hier keinen String verwenden, sondern musst auch eine Funktionsreferenz nehmen, wie in deinem obigen Beispiel. In etwa so

  
function fadeOut( iid, bh, steps) {  
	if(steps == 0) steps = 100;  
	var todo = function() {  
		steps--;  
		if(steps > 1)  setTimeout(todo ,1000);  
	}  
	todo();  
}  

Struppi.