Hey Leutz
ich stehe hier auf dem Schlauch.
Habe ein Script mit einer Rekursion. Das Script ist sehr umfangreich, daher habe ich unnötiges raus geschmissen:
Code:
var niceBox = {
boxTextColors : ['ff0000','00ff00','0000ff','000000','6A83D9','ff0000','00ff00','0000ff','000000','6A83D9'],
// ein par seiten code
// ein par seiten code
// ein par seiten code
boxFade: function(opac){
var passed = parseInt(opac);
var newOpac = parseInt(passed+5);
if(newOpac < 85){
this.box.style.opacity = '.'+newOpac;
this.box.style.filter = "alpha(opacity:"+newOpac+")";
opacityID = window.setTimeout("niceBox.boxFade('"+newOpac+"')",35);
} else {
this.box.style.opacity = '.85';
this.box.style.filter = "alpha(opacity:85)";
this.boxColWalker(0); //nach beendeter fade-in rekursion zweiten "fade" starten
}
},
boxColWalker: function(mycol){
var newcol = mycol + 1;
var boxColNum = 5;
//this.box.style.color = "#ff0000"; -> funktioniert!
if(newcol < boxColNum){
this.box.style.color = "#"+niceBox.boxTextColors[newcol]; //funktioniert auch!
textColFadeID = window.setTimeout("niceBox.boxColWalker('"+newcol+"')",50); //funktioniert nicht?!
//this.boxColWalker(newcol); -> funktioniert nicht?!
//this.boxFade(15); -> funkioniert!!??
}
}
};
das Problem bei der ganzen Sache: Die erste Rekursion läuft einwandfrei. Eine Box wird auf der Website sanft eingeblendet (fade durch opacity). Nach dem die Box selbst eingefadet wurde und opacity den endwert erreicht hat, wird eine zweite Funktion aufgerufen. Diese macht quasi das gleiche wie die erste, nur das sie dieses mal die textfarbe in der box ändert. und zwar schnappt sie sich aus einem array vordefinierte werte, einen nach dem anderen. die textfarbe soll sich damit in der box sanft ändern, nach dem sie eingeblendet wurde (in diesem beispiel habe ich krasse farben gewählt).
Nach dem erfolgreichen fade in wechselt die farbe ein einziges mal! danach bleibt die ganze sache stehen und es rührt sich nix mehr. obwohl rein logisch betrachtet die funktion boxColWalker() sich selbst so oft aufruft mit fortlaufendem zähler, bis das array durchlaufen wurde. jedes mal mit einem timeout.
wählt man die richtige farbcode-reihenfolge sieht das ganze recht hübsch aus. wenn's denn funzt...
vielleicht habe ich nur tomaten auf den augen und der fehler ist eigentlich offensichtlich.
Da die Rekursion davor ganz easy funktioniert hat meine ich, das auch die zweite genauso funktionieren müsste. Aber warum tut sie das nicht?
