ugrás a tartalomhoz

Gond van a naptárral!

Medve · 2009. Jún. 29. (H), 20.14
hali mindenki!
Írtam egy naptárat, ami csak az aktuális hónapot írja ki. A problémám az vele hogy csak a hétfővel, keddel és szerdával kezdődő hónapokat írja ki rendesen ahogy neki kell a többinél meg azt csinálja mint a szerdainál.:P
Szerintem már nagyon kicsi hiányzik a sikerhez, de nem tudok rájönni.Nézzétek át nekem légyszi!

function naptar(){
	var most=new Date();
	var honap=most.getMonth();
	var datum=most.getDate();
	var nap=most.getDay();
	
	if ((honap % 2 == 0)){
		hanynapos=31;
	}
	else{
		if (honap !=1){
			hanynapos=30;
		}
		else{
			hanynapos=29;
		}
	}
	naptarkeszito(honap,datum,3,hanynapos);	
}

function naptarkeszito(melyikhonap,melyikdatum,nap,hanynapos){
	
	switch (melyikhonap){
		case 0:  melyikhonap="Január";     break;
		case 1:  melyikhonap="Február";    break;
		case 2:  melyikhonap="Március";    break;
		case 3:  melyikhonap="Április";    break;
		case 4:  melyikhonap="Május";      break;
		case 5:  melyikhonap="Június";     break;
		case 6:  melyikhonap="Július";     break;
		case 7:  melyikhonap="Augusztus";  break;
		case 8:  melyikhonap="Szeptember"; break;
		case 9:  melyikhonap="Október";    break;
		case 10: melyikhonap="November";   break;
		case 11: melyikhonap="December";   break;
		default : break;
	}
	
	
	
	var body=document.getElementsByTagName('BODY')[0];
	var naptar=document.createElement('TABLE');
	naptar.setAttribute('border','1');
	var tr=document.createElement('TR');
	
	for (var i=1; i<= 7; i++){
		var td=document.createElement('TD');
		td.innerHTML=milyennap(i);
		tr.appendChild(td);
	}
	naptar.appendChild(tr);
	
	datum=1;
	elsosor=true;
	for (var sor=1; sor<=6; sor++){
		var tr=document.createElement('TR');
		for (var i=1; i<=7; i++){
			var td=document.createElement('TD');
			if ((i < nap) || (datum > hanynapos) ){
				td.innerHTML='&nbsp;';
				if (elsosor == false){
					nap=1;
				}
				elsosor=false;
			}
			else{
				td.innerHTML=datum;
				nap=1;
				datum++;
				elsosor=false;
			}
			tr.appendChild(td);
			
		}
		naptar.appendChild(tr);
	}
	
	
	
	body.appendChild(naptar);
}

function milyennap(melyiknap){
	switch (melyiknap){
		case 1:  return melyiknap="Hé&nbsp;";break;
		case 2:  return melyiknap="Ke&nbsp;";break;
		case 3:  return melyiknap="Sze";break;
		case 4:  return melyiknap="Csü"; break;
		case 5:  return melyiknap="Pé&nbsp;";break;
		case 6:  return melyiknap="Szo";break;
		case 7:  return melyiknap="Va&nbsp;";break;
		default : break;
	}
}
 
1

Elősszöris, ez így nem lesz

Baldric · 2009. Jún. 29. (H), 23.19
Elősszöris, ez így nem lesz teljesen pontos, még egy kis finomítás kellene a hónapok hosszánál, decembert is 30 naposnak veszi.
Nekem minden ami az elsosor-ral kapcsolatos feleslegesnek tűnik, ha azzal nem csinál semmit, akkor jól mutatja a hónapok többségét, persze ha a naptarkeszito függvény nap paraméterébe nem 3-at küldesz, hanem a napot.
2

A nap helyére csak azért

Medve · 2009. Jún. 30. (K), 09.38
A nap helyére csak azért írtam számot hogy teszteljem, hogy ne csak a hétfővel kezdődő hónapoat rakja ki rendesen.A problémán az az egésszel hogy ha a getDay() függvény 3-nál nagyobb értéket ad akkor ugyanúgy szerdától kezdi a dátumozást.


A hónapokat meg még nem állítottam be rendesen tudom. XD
3

Igen, gondoltam hogy csak a

Baldric · 2009. Jún. 30. (K), 10.20
Igen, gondoltam hogy csak a tesztelés miatt írtad számmal.
Viszont a 3-nál nagyobb számokkal kapcsolatos problémádra írtam megoldást: "minden ami az elsosor-ral kapcsolatos feleslegesnek tűnik", valóban nem írtam túl érthetően, de arra gondoltam, hogy vegyél ki mindent, aminek köze van az elsosor nevű változóhoz.

Figyeld meg a következő kódot (ami nem fontos azt kihagyom belőle):

for (var i=1; i<=7; i++){  
    if (i < nap){  
        td.innerHTML='&nbsp;';  
        if (elsosor == false){  
            nap=1;  
        }  
        elsosor=false;  
    }
}  
Ha a nap értéke 4, akkor i==1 esetén minden rendben, viszont az elsosor értéke hamis lesz.
i==2 esetén szintén jó az üres hely, viszont a nap értéke 1-re változik a ha függvény miatt.
i==3 esetén viszont már nem lesz kisebb az i értéke a napnál, tehát nem teszi ki az üres helyet, vagyis itt a hiba.
Igazából én nem jöttem rá hogy miért kell ez az elsosor változó, ha figyelmetlen vagyok és mégis van értelme, akkor bocs, de nekem tökéletesen működött úgy, hogy kivettem azt a 3-4 sort, csak a hónapok hossza okozott némi zavart.
4

Köszi szépen!

Medve · 2009. Jún. 30. (K), 11.57
Mostmár mükődik a dátumozás.Még építgetem picit és király lessz.
Köszi tényleg:D
5

Nincs mit :)

Baldric · 2009. Jún. 30. (K), 12.19
Nincs mit :)