[Scriptaculous] Funktionen eventuell vereinfachen

nick_beat20

Grünschnabel
Hallo zusammen,
habe mir gerade mit ein paar Funktionen mit Scriptaculous gebaut.
Die sehen wie folgt aus:

Code:
		   <script type="text/javascript">
		
		   function toggle_start(){
		       new Effect.Appear('AllIn', 
		       {
		       duration:1, from:0, to:1.0,
		       afterFinish:  function()
			   {
               toggle_start1();
			   }
			});
		   }
		   
		   function toggle_start1(){
		       new Effect.Appear('start1', 
		       {
		       duration:1, from:0, to:1.0,
		       afterFinish:  function()
			   {
               toggle_start2();
			   }
			});
		   }
		   
		   function toggle_start2(){
		       new Effect.Appear('start2', 
		       {
		       duration:1, from:0, to:1.0,
		       afterFinish:  function()
			   {
               toggle_start3();
			   }
			});
		   }		   

		   function toggle_start3(){
		       new Effect.Appear('start3', 
		       {
		       duration:1, from:0, to:1.0,
		       afterFinish:  function()
			   {
               toggle_start4();
			   }
			});
		   }
		
		   function toggle_start4(){
		       new Effect.Appear('start4', 
		       {
		       duration:1, from:0, to:1.0 });
		   }		
		
		   </script>

Ich hätte es gerne etwas übersichtlicher und daher die Frage. Kann ich es andern eleganter lösen?
Kenne mich mit Javascript leider nicht so gut aus deswegen wäre ich für jede Hilfe dankbar.

Gruß Sven
 
Hi,

du könntest die Funktion mit einem Array aufrufen, dass die IDs in der Reihenfolge enthält, in der sie abgearbeitet werden sollen.

In der Funktion wird zunächst die erste ID ausgelesen und der Effekt erzeugt. In der callback-Funktion wird das um das erste Element reduzierte Array übergeben.

Beispiel:
Code:
function fnFx(arrIDs){
  new Effect.Appear(arrIDs.first(), {
    duration:1, from:0, to:1.0,
    afterFinish:  function(){
      fnFx(arrIDs.without(arrIDs.first()));
    }
  });
}

// Aufruf
fnFx(['AllIn', 'start1', 'start2', 'start3']);

Ciao
Quaese
 
Hey,
das nenne ich mal einen Lösungsvorschlag. Perfekt. Habe es noch ein wenig angepasst und es hat auf Anhieb funktioniert.
Wenn man sich das Script im Nachhinein mal genau anschaut, ist es eigentlich total Simpel. Aber so ne Idee zu haben ist glaubich das schwierigste an der Sache.

Also. Hab vielen Dank.

Gruß Sven
 

Neue Beiträge

Zurück