php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.06.2011, 13:10  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 141
PHP-Kenntnisse:
Anfänger
EG2011 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Logischer Fehler in benutzerdefinierter Funktion?

Mahlzeit allerseits,

Folgende Funktion (+ Hilfsfunktion) habe ich soeben zusammen gekritzelt.
Firebug spuckt mir hierzu keine Fehler mehr aus.
Blöderweise hängt Firefox sich bei der Ausführung auf, sodass das Skript gestoppt werden muss.

Siehr hier einer nen logischen Fehler?

Was das Skript im groben tut:
1. textContent aus div-Element auslesen, sofern vorhanden
2. Alle numerischen Werte extrahieren und zu einem String onlyNumbers zusammenbasteln
3. Aus diesem String via Hilfsfunktion nur die ersten beiden Werte extrahieren und zu Int-Wert parsen
4. Diesen int-Wert in ein Array defAdder stopfen
5. das ganze 6 mal wiederholen
6. alle Werte im Array defAdder summieren und anschließend nochmal durch die Anzahl Element im Array teilen um das arithmetische Mittel zu berechnen.

Code:
function calcStrength() {

	var defAdder = new Array();
	var defStrength = 0;
	var onlyNumbers = "";
	
	for (var i = 1; i <= 6; i++) {
		if (document.getElementById('def' + i).textContent) {
			var content = document.getElementById('def' + i).textContent;
			for (var j = 0; j < content.length; j++) {
				if (content[j] == /\d/) {
					onlyNumbers += content[j];
				}
			}
			defAdder += extract(onlyNumbers, 0, 1);
		}
	}
	for (var k = 0; k < defAdder.length; i++) {
		defStrength += defAdder[k];
	} 
	defStrength = (defStrength / defAdder.length);
	alert(defStrength);
	// document.getElementById('strengthges').textContent = defStrength;
}

function extract(string, startPos, endPos) {
	var extr = string;
	var parsedNumber = parseInt(extr.slice(startPos, endPos));
	return parsedNumber;
}
EG2011 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.06.2011, 13:18  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Code:
	for (var k = 0; k < defAdder.length; i++) {
		defStrength += defAdder[k];
	}
Da produzierst du eine Endlosschleife, rate mal warum
fab ist gerade online   Mit Zitat antworten
Alt 05.06.2011, 13:56  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 141
PHP-Kenntnisse:
Anfänger
EG2011 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Joa, da ist wohl was dran^^.

Dankschön!
Jetzt kommt zwar immernoch nicht das raus, was ich erwartet hätte, aber es läuft wenigstens schonmal.
Er schreit das Resultat sei NaN. Muss ich mir nun also nochmal anschauen.
EG2011 ist offline   Mit Zitat antworten
Alt 05.06.2011, 14:41  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 141
PHP-Kenntnisse:
Anfänger
EG2011 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habs nun hinbekommen.
So sieht der Code aus, wenn er ordentlich läuft:

Code:
function calcStrength() {

	var defAdder = new Array();
	var defStrength = 0;
	var onlyNumbers = "";
	var regex = /\d/;
	
	for (var i = 1; i <= 6; i++) {
		if (document.getElementById('def' + i).textContent) {
			var content = document.getElementById('def' + i).textContent;
			for (var j = 0; j < content.length; j++) {
				if (regex.test(content[j])) {
					onlyNumbers += content[j];
				}
			}
			defAdder.push(extract(onlyNumbers, 0, 2));
		}
	}
	for (var k = 0; k < defAdder.length; k++) {
		defStrength += defAdder[k];
	} 
	defStrength = (defStrength / defAdder.length);
	// alert(defStrength);
	document.getElementById('strengthges').textContent = defStrength;
}

function extract(string, startPos, endPos) {
	var extr = string;
	var parsedNumber = parseInt(extr.slice(startPos, endPos));
	return parsedNumber;
}
Thread kann geschlossen werden =).
EG2011 ist offline   Mit Zitat antworten
Alt 05.06.2011, 21:28  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Doofe Frage, aber verwendest du jetzt nicht jQuery? Oder ist das ein anderes Projekt? parseInt sollte mit dem radix-Parameter aufgerufen werden, die Funktion extract ist eigtl nur ein wrapper für parseInt. Statt new Array [] benutzen, Array.length einmal vor der for-schleife auslesen (so wirds bei jedem durchgang eingelesen).

jshint ist dein Freund

grüße Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 08.06.2011, 17:55  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 141
PHP-Kenntnisse:
Anfänger
EG2011 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für die Tipps.
Das ist dasselbe Projekt, aber mir war wieder nicht bewusst, dass ich hier auch mit JQuery ne Lösung gefunden hätte =).

Danke!
EG2011 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
OOP Fehler ibeg PHP Einsteiger 7 17.01.2011 19:07
[Erledigt] Funktionsberechtigungne, Rollen und Vererbung von Rechten Geryon Software-Design 37 02.11.2010 23:08
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Name der aufrufenden Funktion mAy^daY PHP Tipps 2007 5 20.01.2007 22:55
Fehler in rekursiver Funktion tinchen PHP Tipps 2006 1 27.08.2006 20:24
fehler in einer funktion imported_master PHP Tipps 2006 3 08.04.2006 21:10
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php logischer fehler, fehler in benutzerdefinierter funktion

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:08 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