Schleifen Problem

Snakebite

Grünschnabel
Ich habe ein Problem mit meinen Schleifen, laufen alle endlos und ich versteh nciht warum...

Code:
function berechnung(month, ende, year, jahr) {
	if (jahr == yahr) {
		for (i=month; i=ende; i++) {
			set_Tag(i, jahr);
		}
	} else {
		for (i=month; i=11; i++) { 
			set_Tag(i, jahr);
		}
		jahr++;
		if (jahr<year) {
			for (i=jahr; i=year-1; i++) {
				for (m=0; m=11; m++) {
					set_Tag(m, i);
				}
			}
		}
		for (i=0; i=ende; i++) {
			set_Tag(i, jahr+1);
		}
	}
	return tag;
}

month ist fesgelegt auf 6, jahr auf 2000 year auf das aktuelle jahr, ende ist der aktuelle monat

ich versteh einfach nicht warum der da endlos läuft...

MfG Snakebite

PS wenn der ausschnitt nicht reichen sollte bitte melden notfalls post ich eben noch den rest oder schicks per KN oder so.
 
Zuletzt bearbeitet:
Hi,

Dein Problem liegt (abgesehen von kleinen Tippfehlern wie "yahr") hier:
Code:
for (i=month; i=11; i++) {
Die Schleife wird so lange ausgeführt, wie die Abbruchbedingung wahr ist. Ein Konstrukt wie "i=11" ist aber kein Vergleich, sondern eine Zuweisung: "i" nimmt den Wert "11" an und damit ist auch die Bedingung immer wahr und die Schleife wird immer ausgeführt. Probiers mal mit:
Code:
for (i=month; i<=11; i++) {
wenn Du bis 11 laufen lassen willst).

Gruß
.
 
Hi,

hast Du auch alle Schleifen entsprechend korrigiert? Bist Du sicher, dass die Startwerte (z.B. "month") so gewählt sind, dass die Schleife abbricht?

Zeige bitte Deinen aktuellen Code und nenne die Werte der Variablen "jahr", "year", "ende" und "month", die an die Funktion übergeben werden.

Gruß
.
 
ich schätze mal ich hab mich einfach irgendwo vertippt, aber eigentlich sollte das so funktionierne hier der code:

Code:
var dann = new Date(2000, 5, 25, 11, 30, 0, 0);
var nun = new Date();
var zwischen = nun-dann;
var sekunden = zwischen/1000;
var tage = Math.floor(sekunden/60/60/24);
sekunden -= tage*60*60*24;
var stunden = Math.floor(sekunden/60/60);
sekunden -= stunden*60*60;
var minuten = Math.floor(sekunden/60);
sekunden -= minuten*60;
sekunden = Math.floor(sekunden);
//--------------------------------------------
var tag = 0;
var monate = 0;
var jahre = 0;
var day31 = 0;
var day30 = 0;
var day29 = 0;
var day28 = 0;
var ende = nun.getMonth()-1;
var month = dann.getMonth()+1;
var tag_a = dann.getDate();
var tag_b = nun.getDate();
var jahr = dann.getFullYear();
var year = nun.getFullYear();
berechnung(month,ende,year,jahr);
//--------------------------------------------
function berechnung(month, ende, year, jahr) {
	if (jahr == year) {
		for (i=month; i<=ende; i++) {
			set_Tag(i, jahr);
		}
	} else {
		for (i=month; i<=11; i++) { 
			set_Tag(i, jahr);
		}
		jahr++;
		if (jahr<year) {
			for (i=jahr; i<=year-1; i++) {
				for (m=0; m<=11; m++) {
					set_Tag(m, i);
				}
			}
		}
		for (i=0; i<=ende; i++) {
			set_Tag(i, jahr+1);
		}
	}
	return tag;
}
//--------------------------------------------
function set_Tag(month, jahr) {
	if (check_month(month) == 1) {
		set_day31();
	} else if (check_month(month) == 2) {
		set_day29();
	} else if (check_month(month) == 3) {
		set_day28();
	} else if (check_month(month) == 4) {
		set_day30();
	}
	set_Monat();
	return null;
}
//--------------------------------------------
function set_day31() {
	day31++;
	return null;
}
//--------------------------------------------
function set_day30() {
	day30++;
	return null;
}
//--------------------------------------------
function set_day29() {
	day29++;
	return null;
}
//--------------------------------------------
function set_day28() {
	day28++;
	return null;
}
//--------------------------------------------
function schaltjahr(jahr) {
	var jahre = jahr;
	while (jahre-4>=1) {
		jahre = jahre-4;
	}
	var year_1 = jahre;
	jahre = jahr;
	while (jahre-100>=1) {
		jahre = jahre-100;
	}
	var year_2 = jahre;
	jahre = jahr;
	if (year_2 == 1) {
		while (jahre-400>=1) {
			jahre = jahre-400;
		}
	}
	var year_3 = jahre;
	return ist_schaltjahr(year_1, year_2, year_3);
}
//--------------------------------------------
function ist_schaltjahr(year_1, year_2, year_3) {
	var schaltjahr = false;
	if (year_1 == 1 and year_2 == 0) {
		schaltjahr = true;
	}
	if (year_2 == 1 and year_3 == 1) {
		schaltjahr = true;
	}
	return schaltjahr;
}
//--------------------------------------------
function set_Monat() {
	monate++;
	if (monate>=12) {
		monate = 0;
		set_jahr();
	}
	return null;
}
//--------------------------------------------
function set_Jahr() {
	jahre++;
	return null;
}
//--------------------------------------------
function check_month(month) {
	if (month == 0 or month == 2 or month == 4 or month == 6 or month == 7 or month == 9 or month == 11) {
		da_check = 1;
	} else if (month == 1) {
		if (schaltjahr(jahr) == true) {
			da_check = 2;
		} else {
			da_check = 3;
		}
	} else {
		da_check = 4;
	}
	return da_check;
}

das programm ist noch nicht fertig, es fehlen noch berechnungsschritte die dann hinterher die Tage angleichen, was allerdings nicht das problem sein sollte, nur solange sich das skript immer wieder auffhängt bringt mir das nichts ;)
 
Zuletzt bearbeitet:
Zurück