Fragen zu Countdown

Eistee

Erfahrenes Mitglied
Hi,
keine Angst, ich will nicht wissen, wie ich mir ein Countdown-Script schreibe - dazu gibts hier echt genug Beiträge und ich hab auch schon was passendes gefunden ;)
Da ich aber selbst keihne Ahnung von JS habe, wollte ich dennoch wissen, wie ich folgendes script umändern muss, damit, sobald der Zähler am vorgegebenen Datum/Uhrzeit angekommen ist, ein beliebiger Text anstelle des Countdowns angezeigt wird.

Hier mein Code, den ich mir hier im Board zusammen gesucht habe:

Code:
<script language="JavaScript" type="text/javascript">
var destination = new Date();
destination.setYear(2005);
destination.setMonth(7); // Januar = 0
destination.setDate(4);
destination.setMinutes(1320);
destination.setSeconds(0);
setTimeout("countDate()", 1000);

function countDate() {
    var dst = destination;
    var now = new Date();
    var diff = parseInt((dst - now) / 1000);
    var days = parseInt(diff / (60 * 60 * 24));
    diff -= (days * 60 * 60 * 24);
    var hours = parseInt(diff / (60 * 60));
    diff -= (hours * (60 * 60));
    var minutes = parseInt(diff / 60);
    diff -= (minutes * 60);
    var seconds = parseInt(diff);
    document.getElementById("no_countdown").value = days + " Tage, " + hours + " h, " + minutes + " m, " + seconds + " s";
    setTimeout("countDate()", 500);
}
</script>

Wie muss ich den Code ändern, damit das Script um oben beschriebene Funktion erweitert wird?
Danke für eure Hilfe!
 
Code:
<script type="text/javascript"><!--
   var destination = new Date(2005,6,4,22,0,0);
   window.onload = countDate;
   
   function countDate() {
   	var dst = destination;
   	var now = new Date();
   	var diff = parseInt((dst - now) / 1000);
   	if (diff > 0) {
   		var d = Math.floor(diff / 86400);
   		var h = Math.floor((diff % 86400) / 3600);
   		var m = Math.floor((diff % 3600) / 60);
   		var s = diff % 60;
 		 document.getElementById("no_countdown").value = d + " d, " + h + " h, " + m + " m, " + s + " s";
   		setTimeout("countDate()", 999);
   	} else {
   		document.getElementById("no_countdown").value = 'Coundown fertig';
   	}
   }
   //--></script>
Ich hab mir erlaubt den countdown ein wenig zu verkleinern.
 
Zuletzt bearbeitet:
Super, danke

Eine Frage hab ich aber noch:
Was genau muss ich hier eintragen, wenn bis zum 05.08.2005 um 20:00 runter gezählt werden soll?
Code:
var destination = new Date(2005,6,4,22,0,0);
 
Tut mir ja leid, aber ich hab von JS echt keinen Plan.
Code:
var destination = new Date(2005,7,5,20,0,0);

wenn ich das so eingebe (als für den 05.08.2005 um 20:00 Uhr) erhalte ich folgende Ausgabe:

"57 d, 57 h, 14 m, 12 s"

das mit den 57h dürfte aber eigentlich nicht sein, oder?!
vielmehr müsste es jetzt (19:46) 0h und 14m sein...

Ausserdem würde ich die aktuelle Zeit gern mit PHP erzeugen, da ich somit die Möglichkeit umgehe, dass beim user die system-zeit verstellt ist.
Wenn ich das richtig verstanden habe recht die JS-Funktion date() aber von 2020 zurück.
Die PHP-Funktion time() entspricht wohl der JS-Funktion getDate() - richtig?
Wie muss ich obiges Script umschreiben, damit ich folgende Änderung einbinden kann:

PHP:
var now = <?php time(); ?>

Also: wie müsste das ganze script aussehen, wenn man das aktuelle Datum/Zeit mit getDate ermitteln würde?
 
Zuletzt bearbeitet:
Ich hab dir den Link gegeben und dir sogar noch gesagt, das die Monate bei 0 anfangen obwohl es auch deutlich zu lesen war.

Außerdem haben wir Juni und Juli oder August!

Dein Fehler war erstens anzunehmen, dass Juli ist (erkälrt 26 von den 57 Tagen zu viel) und zweitens dann auch noch "7" ins JavaScript zu schreiben, was für JavaScript August heißt (erklärt die restlichen 31 Tage zu viel). Die Zählung der Monatebeginnt wie erwähnt für JavaScript nämlich bei 0 = Januar (kannst du in diesem Thread drei mal und nach Klicken des Links mindestens noch weitere 4 Mal lesen).

Herrje, lesen müsste man dann schon allein, wenn's ca. sieben Mal gesagt wird.

Wenn du die Serverzeit in JavaScript haben willst brauchst du einen ganz anderen Ansatz was das JavaScript betrifft (die Idee mit PHP war schonmal richtig).
Vielleicht kommst du ja selber drauf. In dem Script von hier kommt theoretisch alles vor was du brauchst. Kleiner Tipp: Differenz aus Serverzeit und Klientenzeit.
 
Zuletzt bearbeitet:
Du kannst mich jetzt für völlig blöd halten, aber ich kann dir absolut nicht mehr folgen.
Ich möchte doch auf den 05.08.2005 20:00 Uhr runter zählen.
Dann ist es doch richtig, wenn ich als Monat eine "7" für August schreibe?!

Wie müsste es deines erachtens denn heisen?
 
Ah, du hast recht mein Fehler - ich nehm alles zurück, bitte entschuldige! Habe mich verlesen.

Es hat sich ein Fehler eingeschlichen. Die Zeile
HTML:
h = Math.floor(s / 86400);
muss natürlich so lauten:
HTML:
h = Math.floor((diff % 86400) / 3600);
Habe es in meinem Originalpost berichtigt. Tut mir wirklich leid, diesmal hab ich nicht richtig gelesen, wie peinlich (aber mir wurde es ja auch nur zwei mal gesagt :-(), sorry. Auweia!
 
Zuletzt bearbeitet:
Als Entschuldigung gibts jetzt nochmal das Script mit der gewünschen PHP-Anpassung:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head><title>Untitled</title><meta name="AUTHOR" content="con-f-use@gmx.net" /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  
  <script type="text/javascript"><!--
  
  var n = new Date();
  var scdif = n.getTime() - <?php echo date("U");?>000;
  var destination = new Date(2005,7,5,20,0,0);
  window.onload = countDate;
     
  function countDate() {
  	var dst = destination;
  	var now = new Date();
  	var diff = parseInt((dst - now + scdif) / 1000);
  	if (diff > 0) {
  		var d = Math.floor(diff / 86400);
  		var h = Math.floor((diff % 86400) / 3600);
  		var m = Math.floor((diff % 3600) / 60);
  		var s = diff % 60;
 	    document.getElementById("no_countdown").innerHTML = d + " d, " + h + " h, " + m + " m, " + s + " s";
  		setTimeout("countDate()", 999);
  	} else {
  		document.getElementById("no_countdown").innerHTML = 'Coundown fertig';
  	}
  }
  
  //--></script>
  
  </head><body>
  
  	<div id="no_countdown" align="center"></div>
  
  </body></html>
 

Neue Beiträge

Zurück