php.de

Zurück   php.de > Webentwicklung > HTML, Usability und Barrierefreiheit

HTML, Usability und Barrierefreiheit Themen rund um Textauszeichnung, Formatierung, Barrierefreiheit und Usability.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.05.2006, 14:31  
Gast
 
Beiträge: n/a
Standard Rekursionsfehler?

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?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.05.2006, 14:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist das JavaScript? Die Syntax kenne ich teilweise garnicht... (aber bin auch kein Meister in JS).

Kann man das ganze mal online sehen? Werden Skript-Fehler angezeigt?
Zergling-new ist offline   Mit Zitat antworten
Alt 10.05.2006, 15:06  
Gast
 
Beiträge: n/a
Standard

online ist's leider noch nicht (offline geproggt). Scriptfehler werden keine angezeigt.

es handelt sich um eine art objektorientierte js-programmierung. Den Fehler habe ich inzwischen durch try&error gefunden (nach mehreren stunden nix-funzen).

es lag am parseInt ... oben die erste Rekursion -> bei der zweiten Rekursion habe ich's weg gelassen. Ist mir zwar schleierhaft aber mit parseInt läuft's
  Mit Zitat antworten
Alt 10.05.2006, 15:10  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Nee nix mit schleierhaft

eigentlich wollt ich nichts mehr posten da du ja auf die hilfe andere net so fein reagierst aber kuck dir doch mal deine Übergabe an ...

Du übergibst 'n String .. ?!??!?! und zu dem String machst du +1

Tja was passiert dort wohl ...


Immernoch schleierhaft ?!
M3g4Star ist offline   Mit Zitat antworten
Alt 10.05.2006, 15:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

parseInt() kann dir übrigens viel Ärger bereiten. Manchmal benutzt es nämlich als Basis nicht 10, sondern 8. Darauf zu kommen ist spassig sag ich dir..

http://de.selfhtml.org/javascript/ob....htm#parse_int
Zitat:
Die Methode parseInt() erlaubt einen zweiten, optionalen Parameter radix. Dieser Parameter enthält die Basis des verwendeten Zahlensystems. Der Aufruf parseInt(string, radix) ermittelt aus dem String, der eine Zahl eines anderen Zahlensystems darstellt, die dazugehörige Dezimalzahl. Die Methode parseInt() kann damit gleichzeitig als Umrechner von Zahlen anderer Zahlensysteme in das dezimale Zahlensystem verwendet werden. So ergibt z.B. der Aufruf parseInt("11111", 2) die Zahl 31. Der optionale Parameter kann Werte zwischen 2 und 36 annehmen.
Zergling-new ist offline   Mit Zitat antworten
Alt 10.05.2006, 15:47  
Gast
 
Beiträge: n/a
Standard

danke für den tipp! wenn ich in meinem script nix mit oktalsystem mache, muss ich dann trotzdem sicherheitshalber pareInt(zahl,10) machen?
  Mit Zitat antworten
Alt 10.05.2006, 21:02  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Kann diesen Zustand gerade nicht großartig reproduzieren, aber mach mal

<script>
alert(parseInt("07"));
alert(parseInt("08"));
</script>

Dann siehst du was da manchmal für Ergebnisse rauskommen, wenn JavaScript selbst probiert, die Basis für ein Zahlensystem zu ermitteln (hier Oktal, gut mag logisch sein, beginnend mit 0 ist nunmal Oktal, aber das ist nicht immer gewünscht).
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
rekursionsfehler, php rekursive funktion timeout, javascript box rekursive, javascript parseint zahlen mit 0 davor

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.