Javascript Zeitspanne als Countdown darstellen
Hallo,
ich bin absoluter Javascript Anfänger und möchte folgendes realisieren:
Es soll die Restzeit zwischen der aktuellen Zeit und einer festgesetzten Zeit dargestellt werden. Wenn die Zeit abgelaufen ist, soll ein Page-reload stattfinden.
Dazu habe ich den folgenden Code, welcher bisher nur die Zeit sekundengenau darstellt:
window.setInterval("timefunc()",1000);
function timefunc(){
d = new Date ();
h = (d.getHours () < 10 ? '0' + d.getHours () : d.getHours ());
m = (d.getMinutes () < 10 ? '0' + d.getMinutes () : d.getMinutes ());
s = (d.getSeconds () < 10 ? '0' + d.getSeconds () : d.getSeconds ());
document.getElementById("time").innerHTML =
+ h + ':' + m + ':' + s;
}
Nun nehmen wir mal die Anfangszeit, es ist 18:30Uhr. Die zweite Zeit ist jeden Tag um 20Uhr. Das heißt ich möchte etwas in der Art anzeigen: "Verbleibende Zeit = 1:29:59. Wenn die Zeit abgelaufen ist, soll die Seite neu geladen werden.
Es wäre sehr nett, wenn mir jemand verraten könnte, wie ich das umsetzen kann. Vielen Dank.
P.S.:
Meine ersten Überlegungen waren sowas in der Art:
if (now < 20) {
document.getElementById("time").innerHTML =
+ 'verbleibende Zeit: ' + h + ':' + m + ':' + s;
}
if ( now = 20){
window.location.href
}
ich bin absoluter Javascript Anfänger und möchte folgendes realisieren:
Es soll die Restzeit zwischen der aktuellen Zeit und einer festgesetzten Zeit dargestellt werden. Wenn die Zeit abgelaufen ist, soll ein Page-reload stattfinden.
Dazu habe ich den folgenden Code, welcher bisher nur die Zeit sekundengenau darstellt:
window.setInterval("timefunc()",1000);
function timefunc(){
d = new Date ();
h = (d.getHours () < 10 ? '0' + d.getHours () : d.getHours ());
m = (d.getMinutes () < 10 ? '0' + d.getMinutes () : d.getMinutes ());
s = (d.getSeconds () < 10 ? '0' + d.getSeconds () : d.getSeconds ());
document.getElementById("time").innerHTML =
+ h + ':' + m + ':' + s;
}
Nun nehmen wir mal die Anfangszeit, es ist 18:30Uhr. Die zweite Zeit ist jeden Tag um 20Uhr. Das heißt ich möchte etwas in der Art anzeigen: "Verbleibende Zeit = 1:29:59. Wenn die Zeit abgelaufen ist, soll die Seite neu geladen werden.
Es wäre sehr nett, wenn mir jemand verraten könnte, wie ich das umsetzen kann. Vielen Dank.
P.S.:
Meine ersten Überlegungen waren sowas in der Art:
if (now < 20) {
document.getElementById("time").innerHTML =
+ 'verbleibende Zeit: ' + h + ':' + m + ':' + s;
}
if ( now = 20){
window.location.href
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 232473
Url: https://administrator.de/forum/javascript-zeitspanne-als-countdown-darstellen-232473.html
Ausgedruckt am: 16.05.2025 um 07:05 Uhr
12 Kommentare
Neuester Kommentar
Hallo bloedername,
das sollte dir auf die Sprünge helfen:
http://www.umingo.de/doku.php?id=php:countdown
Grüße Uwe
das sollte dir auf die Sprünge helfen:
http://www.umingo.de/doku.php?id=php:countdown
Grüße Uwe
OK, der countdown auf der Seite benutzt entweder die Angabe von Sekunden, oder eben die Variante countdown2(Tage,Stunden,Minuten,Sekunden,ID). Da du aber eine Zielzeit angeben willst habe ich dir die Funktion mal angepasst, damit du ein Datum übergeben kannst:
Den Aufruf des Countdowns machst du dann wie folgt:
Die Angabe des Datums erfolgt nach folgendem Schema Jahr, Monat - 1, Tag, Stunde, Minute, Sekunde. Dabei gilt es aber zu beachten das die Monate bei 0 beginnen, also ist der März eine 2. Der letzte Parameter ist die ID eines Elementes auf deiner Seite in der der Countdown dargestellt werden soll.
Im Beispiel beginnt der Countdown beim Laden der Seite, und wenn der Countdown abgelaufen ist, wird die Seite neu geladen.
Alternativ kann man das Datum auch so angeben:
Die möglichen Varianten kannst du hier nachlesen.
Grüße Uwe
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test-Countdown</title>
<script type="text/javascript">
function countdown(time,id){
var today = new Date();
t = Math.floor((time - today)/1000);
d = Math.floor(t/(60*60*24)) % 24;
h = Math.floor(t/(60*60)) % 24;
m = Math.floor(t/60) %60;
s = t %60;
d = (d > 0) ? d+"d ":"";
h = (h < 10) ? "0"+h : h;
m = (m < 10) ? "0"+m : m;
s = (s < 10) ? "0"+s : s;
strZeit =d + h + ":" + m + ":" + s;
if(t > 0)
{
window.setTimeout('countdown('+ --time+',\''+id+'\')',1000);
}
else
{
window.location.reload();
}
document.getElementById(id).innerHTML = strZeit;
}
</script>
</head>
<body onLoad="countdown(new Date(2014,2,13,20,0,0),'cID');">
<div id="cID"></div>
</body>
</html>
countdown(new Date(2014,2,13,20,0,0),'cID');
Im Beispiel beginnt der Countdown beim Laden der Seite, und wenn der Countdown abgelaufen ist, wird die Seite neu geladen.
Alternativ kann man das Datum auch so angeben:
countdown(new Date('2014/03/13 20:00:00'),'cID');
Grüße Uwe
So, da ich hier immer noch nicht von dir weiß, was dein PHP-Script nach einem Reload an Daten an das Javascript übergibt hier mal eine Variante die nach dem Reload die Zeit auf einen festen Abstand in die Zukunft setzt, mit deiner inzwischen wieder gelöschten Variante mit ausgeschriebenen Zeit:
Denke das du das an deine Wünsche anpassen können solltest... Javascript ist ja nicht so unterschiedlich zu PHP (bzw. Syntax lernen ist ja kein Hexenwerk).
Denke damit sollte das Thema hier abgeschlossen sein.
Grüße Uwe
Denke das du das an deine Wünsche anpassen können solltest... Javascript ist ja nicht so unterschiedlich zu PHP (bzw. Syntax lernen ist ja kein Hexenwerk).
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test-Countdown</title>
<script type="text/javascript">
function countdown(time,id){
var today = new Date();
var strZeit;
t = Math.floor((time - today)/1000);
d = Math.floor(t/(60*60*24)) % 24;
h = Math.floor(t/(60*60)) % 24;
m = Math.floor(t/60) %60;
s = t %60;
s = (s != 1) ? s+" Sekunden" : s+" Sekunde";
m = (m != 1) ? m+" Minuten" : m+" Minute";
h = (h != 1) ? h+" Stunden" : h+" Stunde";
d = (d != 1) ? d+" Tage" : d+" Tag";
if (t < 60){
strZeit = s;
}else if (t < 3600){
strZeit = m + " " + s;
}else if (t < (3600*24)){
strZeit = h + " " + m + " " + s;
}else{
strZeit = d + " " + h + " " + m + " " + s;
}
if(t > 0){
window.setTimeout('countdown('+ --time+',\''+id+'\')',1000);
}
else{
strZeit = "Zeit abgelaufen, Seite wird neu geladen und Timer neu gestartet!"
window.setTimeout('window.location.reload()',1000);
}
document.getElementById(id).innerHTML = strZeit;
}
</script>
</head>
<body onLoad="var d = new Date(); countdown(new Date(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes()+1,d.getSeconds() + 5),'cID');">
<div id="cID"></div>
</body>
</html>
Grüße Uwe