Brauch Hilfe bei einem Script!

SixxKiller

Erfahrenes Mitglied
Hi Leutz!

Ich benötige eure Hilfe bei einem JavaScript. Bei dem Script geht es um einen
Countdown der abläuft bis zu einem gewissen Datum. Das funktioniert auch perfekt.
Ich möchte jetzt aber das man nicht nur ein Datum eintragen kann sondern soviele
wie man benötigt. Da ich nur sehr wenig Ahnung hab von Java und JavaScript
brauch ich eure Hilfe. Wie kann man dies ermöglichen?
Vorab großen Dank an Euch.

Code:
	var jahr=2006, monat=09, tag=03, stunde=18, minute=00, sekunde=0; // Ziel-Datum in MEZ
	var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

	function countdown() {
		startDatum=new Date(); // Aktuelles Datum

		// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
		if(startDatum<=zielDatum)  {

			var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

			/* Allgemeines Vorgehen:
			 * Zunächst werden die vollen Jahre gezählt
			 * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
			 * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats berechnet
			 * und danach die tatsächlichen Monatstage wieder mit einbezogen.
			 * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
			 * Die restliche Differenz zwischen Start- und Ziel-Zeit wird mit Tagen aufgefüllt und
			 * was dann noch übrig bleibt, in Stunden, Minuten und Sekunden ausgedrückt.*/

			// Jahre
			if(startDatum<zielDatum) {
				while(startDatum<zielDatum) {
					if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
				}
				startDatum.setFullYear(startDatum.getFullYear()-1);
			}

			// Restliche Tage zum Monatsende ermitteln
			var restTage=0;
			var m=startDatum.getMonth();
			if(m==1-1||m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1) restTage=31-startDatum.getDate();
			else if(m==4-1||m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
			else if(m==2-1) {
				if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0 || startDatum.getFullYear()%400==0)) restTage=29-startDatum.getDate(); // Schaltjahr
				else restTage=28-startDatum.getDate();
			}

			// Start- und Ziel-Tag merken und auf 1 setzen
			var startTag=startDatum.getDate();
			var zielTag=zielDatum.getDate();
			startDatum.setDate(1);
			zielDatum.setDate(1);

			// Monate
			if(startDatum<zielDatum) {
				while(startDatum<zielDatum) {
					if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
				}
				startDatum.setMonth(startDatum.getMonth()-1);
			}

			// Tatsächlichen Start- und Ziel-Tag berücksichtigen
			if(startDatum.getMonth()==zielDatum.getMonth()) {
				if(startTag<=zielTag) startDatum.setDate(startTag);
				else {
					monate--;
					tage=restTage+1;
				}
			}
			else {
				startDatum.setMonth(startDatum.getMonth()+1);
				if(startTag>=zielTag) tage=restTage+1;
				else {
					monate++;
					startDatum.setDate(startTag);
				}
			}
			zielDatum.setDate(zielTag);

			// Tage
			restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
			startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
			tage+=restTage;

			// Stunden
			stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
			startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

			// Minuten
			minuten=Math.floor((zielDatum-startDatum)/(60*1000));
			startDatum.setTime(startDatum.getTime()+minuten*60*1000);

			// Sekunden
			sekunden=Math.floor((zielDatum-startDatum)/1000);

			// Anzeige formatiere
			(tage<10)	?	tage		="0"+tage+"t "	: tage		=tage+"t ";
			(stunden<10)	?	stunden		="0"+stunden+"h "	: stunden	=stunden+"h ";
			(minuten<10)	?	minuten		="0"+minuten+"m "	: minuten	=minuten+"m ";
			(sekunden<10) 	?	sekunden	="0"+sekunden+"s"	: sekunden	=sekunden+"s";
			
			if(monate>0)
			{
				(monate<10)	?	monate		= monate+"M "	: monate	= monate+"M ";
				document.countdownform.countdowninput.value=monate+tage+stunden+minuten+sekunden;
			}
			else
			{
				document.countdownform.countdowninput.value="In: "+tage+stunden+minuten+sekunden;	
			}

			setTimeout('countdown()',200);
		}
		// Anderenfalls alles auf Null setzen
		else
			document.reload(); 
		// document.countdownform.countdowninput.value="0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
	}

Greetz SixxKiller
 
Was meinst du mit "soviele
wie man benötigt"?

Du möchtest mehrere Daten runterzählen lassen? Dann würde ich ein Array mit Datumsangaben implementieren.
 
Ich möchte mehrere Daten nacheinander runter zählen lassen. Der Countdown zählt
bis zu einem nächsten Eishockeyspiel runter und sollte dann mit dem nächsten
Datum weiter machen. Bisher musste ich jedes Datum neu eingeben was manchmal
etwas schwierig únd umständlich ist. Wie muss ich das anstellen mit Array mit Datumsangaben Wie gesagt kenn ich mich kaum aus mit JavaScripts.
 
Also streng sequentiell, d.h. es wird immer nur ein Countdown gebraucht? Oder willst du mehrere Countdowns gleichzeitig anzeigen?
 
Nein es wird nur ein Countdown gebraucht der nacheinander mehrere Daten
herunter zählt. Bisher konnte man nur ein Datum ein geben. Ich möchte mehrere
Daten eingeben können die der Zähler dann nacheinander runter zählt.
 
Die Daten musst du in einem Array abspeichern.

zielDaten = new Array();
zielDaten[1] = new Date(jahrA,monatA,tagA,stundeA,minuteA,sekundeA);
zielDaten[2] = new Date(jahrB,monatB,tagB,stundeB,minuteB,sekundeB);
zielDaten[3] = new Date(jahrC,monatC,tagC,stundeC,minuteC,sekundeC);
zielDaten[4] = new Date(jahrD,monatD,tagD,stundeD,minuteD,sekundeD);
zielDaten[5] = new Date(jahrE,monatE,tagE,stundeE,minuteE,sekundeE);
usw.

Dann musst du die Zieldaten mit dem aktuellen Datum gegenchecken, um herauszufinden welches das nächste, nicht verflossene Datum ist und das entsprechende Zieldatum an das Countdown-Skript übergeben.
 
Das schein ich jetzt soweit verstanden zu haben. Nu wie bau ich das in den Script ein?
Da ich wie gesagt bei JavaScript mich fast null auskenne möchte ich da nicht experimentieren. Könntest Du den Script mal komplett posten?
 
Mit dieser Antwort hatte ich schon gerechnet. Nicht umsonst bitte ich
hier um Hilfe. Hab natürlich vorab selbst mein Glück versucht und bin kläglich gescheitert.
Hab auch in der Zwischenzeit versucht deinen Code einzubinden aber bisher funktioniert
es einfach nicht. Ohne Hilfe bin ich aufgeschmissen.
 
Dann poste doch wenigstens deinen Versuch, aber ohne ein Mindestmaß an Beschäftigung mit der Materie wirst du trotz Hilfen wohl nicht sehr weit kommen. Man hilft ja gern, aber wenn das dann gleich dergestalt ausartet, voll ausgeformte Skripte liefern zu müssen, finde ich das ein bißchen.... naja

Dein Problem lässt sich mit einer for-Schleife und ein-zwei if-Abfragen lösen.
 

Neue Beiträge

Zurück