Problem mit Countdown

SixxKiller

Erfahrenes Mitglied
Hi Leutz!

benötige wieder einmal eure Hilfe.
In meiner HP hab ich ein JavaScript was einen Countdown zu
einem angegebenen datum laufen lässt. Nun möchte ich dieses
JavaScript auslagern um die Datei besser und schneller bearbeiten
zu können und nicht ständig die html zu nehmen. Das Script sollte
per IFrame in der html laufen. Wenn ich jetzt die Seite öffne öffnet sich
ein Download Fenster vom JavaScript. Das ist nicht das was ich wollte.
Was hab ich falsch gemacht bzw. was muss ich ändern das die datei bzw,
das JavaScript nicht gedownloaded wird?
Hier der Code:
Code:
<script language="JavaScript">
	var jahr=2005, monat=9, tag=25, stunde=18, minute=30, 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 formatieren
			(tage<10)		?	tage		="In: 0"+tage+"T:"	: tage		="In: "+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";
			document.countdownform.countdowninput.value=tage+stunden+minuten+sekunden;

			setTimeout('countdown()',200);
		}
		// Anderenfalls alles auf Null setzen
		else document.countdownform.countdowninput.value="X Jahre,  X Monate,  X Tage,  X Stunden,  X Minuten  und  XX Sekunden";
	}
</script>
</head>
<body onload="countdown()">
Code:
<form name="countdownform">
	<p align="center">
	<font color="#FF0000">
	<input size="18" name="countdowninput" style="background-color:transparent;border-width:2; font-weight:700" onfocus="if(this.blur)this.blur()"></font></p>
</form>
Danke für eure Hilfe und Mühe.

Greetz SixxKiller
 
Da wäre der Frameset mal ganz hilfreich und der Frame in dem du die js-Datei eingeunden hast. Dein Code bringt leider so gut wir gar nichts.

Am besten du postest hier einen Link!
 
Hab ich ganz normal übern IFrame eingesetzt.
Habs mit Frontpage gemacht.
Code:
<iframe name="I1" width="162" height="150" src="countdown.js">
	Ihr Browser unterstützt Inlineframes nicht oder zeigt sie in der derzeitigen Konfiguration nicht an.
	</iframe>

Greetz SixxKiller
 
Kein wunder, dass da ein downlod kommt.

Du musst es so machen:
HTML:
<iframe name="I1" width="162" height="150" src="countdown.html"> Ihr Browser unterstützt Inlineframes nicht oder zeigt sie in der derzeitigen Konfiguration nicht an. </iframe>

Und in die countdown.html dann
HTML:
<html><head><title>Countdown</title>
  
  <script type="text/javascript" src="countdown.js"></script>
  
  </head><body>
  
  <form name="countdownform">
  <p align="center">
  <font color="#FF0000">
  <input size="18" name="countdowninput" style="background-color:transparent;border-width:2; font-weight:700" onfocus="if(this.blur)this.blur()">
  </font>
  </p>
  </form>
  
  </body></html>
In der countdown.js dürfen dann keine Script-Tags mehr sethen.
 
Scheint zu funktionieren. Erstmal dicken Dank.
Hab ich die Möglichkeit statt einer countdown.html auch eine
Textdatei dafür zu verwenden?

Greetz SixxKiller
 
Nein, dann hättest du nämlich wieder das download-Problem. Ich weiß aber nicht so recht, wieso du's überhaupt in einen iframe packst - du könntest auch das '<script src="countdown.js"....' dirkent ins Dokument schreiben zusammen mit dem Formular. Oder willst du gerade dieses Formular nicht in deiner html?
 
Es geht mir eigentlich nur darum das ich den Countdown so einfach
wie möglich bearbeiten kann. Minimum 2 Mal die Woche muss ich das
Datum ändern und in einer TXT wäre das für mich am einfachsten.
Daher der gedanke mit der Textdatei.

Greetz SixxKiller
 
Hat sich im Prinzip erledigt.
Die JS kann ich ja direkt mit Flash FXP zb bearbeiten.
Somit brauch ich keine TXT.
Nochmals großen Dank für die schnelle Hilfe!

Greetz SixxKiller
 
Zurück