JS Countdown
xastax
- javascript
Hallo,
ich schlage mich momentan mit einer kleine Problematik rum.
Ich möchte einen Countdown der von einer fixen Zeiteinstellung von der aktuellen Server-Zeit runterzählt. Dazu hatte ich folgen des benutzt.
var end = new Date('<? echo "hier fest Zeit eintragen" ?>');
function toSt2(n) {
s = '';
if (n < 10) s += '0';
return (s + n).toString();
}
function toSt3(n) {
s = '';
if (n < 10) s += '00';
else if (n < 100) s += '0';
return (s + n).toString();
}
function countdown() {
var timestamp;
<?php echo "timestamp = " . (mktime() * 1000); ?>
d = new Date(timestamp);
count = Math.floor(end.getTime() - d.getTime());
if(count > 0) {
miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
seconds = toSt2(count%60); count = Math.floor(count/60);
minutes = toSt2(count%60); count = Math.floor(count/60);
hours = toSt2(count%24); count = Math.floor(count/24);
days = count;
document.getElementById('c2').innerHTML = minutes + ':' + seconds
setTimeout('countdown()', 50);
}
Der Countdown zählt nicht selbstständig runter. Die Zeit wird nur Angezeigt.
Mit einer Reihe von Refresh kann ich das ganze zwar "Simulieren", aber das ist ja nicht der Sinn der Übung.
Wo liegt mein Fehler?
Danke für eure Hilfe
Xastax
Hellihello
warum nimmst du zur Fehlerbehebung nicht erstmal nur den HTML/JS-Code?
In Schritt 2 sieh zu, wie du das dann mit PHP baust.
Dank und Gruß,
Hallo frankx,
danke für deine Antwort.
Das Script an sich funktioniert:
Das Problem scheint in diesen Zeilen zu liegen:
"var timestamp;
<?php echo "timestamp = " . (mktime() * 1000); ?>
d = new Date(timestamp);"
"d = new Date();" funktioniert.
Ich habe schon alle mir bekannten Möglichkeiten durch. Aber ich komme da nicht weiter.
Danke & MfG
xastax
Hellihello
Das Problem scheint in diesen Zeilen zu liegen:
"var timestamp;
<?php echo "timestamp = " . (mktime() * 1000); ?>d = new Date(timestamp);"
"d = new Date();" funktioniert.
Ich habe schon alle mir bekannten Möglichkeiten durch. Aber ich komme da nicht weiter.
Dein php ist aus meiner Sicht in Schritt 1 egal. Wenn das JS ohne PHP funktioniert, dann zusehen, dass PHP das nötige HTML produziert.
PHP -> HTML -> Javascript
Dank und Gruß,
Hi,
if(count > 0) {
Wo schließt du diese geschweifte Klammer wieder?
document.getElementById('c2').innerHTML = minutes + ':' + seconds
Hier fehlt wohl ein Strichpunkt am Schluss.
Der Countdown zählt nicht selbstständig runter. Die Zeit wird nur Angezeigt.
Wo liegt mein Fehler?
Die oben genannten Fehler waren nur die, die ich auf den ersten Blick gesehen habe, es kann sein, dass noch mehr in deinem Code sind.
Benutze die Fehlerkonsole deines Browsers (im Firefox unter Extras -> Fehler-Konsole) um dir solche Fehler anzeigen zu lassen.
Wenn dein Script Syntax-Fehler enthält wird es nicht ausgeführt und darum zählt dein Countdown auch nicht runter.
mfG,
steckl
Hallo,
danke für deine Antwort.
Der Strichpunkt fehlt, das stimmt, eingenartigerweise ist das nicht das problem. Die klammer ist wohl beim copy paste verloren gegangen.
Die Fehlerconsole gibt mir keinen Fehler zurück.
Das Script funktioniert wenn ich
"var timestamp;
<?php echo "timestamp = " . (mktime() * 1000); ?>
d = new Date(timestamp);"
weg lasse und durch "d = new Date();" ersetze. Sonst geht es wunderbar.
new Date(); liefert mir allerdings die Client-Zeit und das verfälscht meinen Countdown.
Danke & MfG
xastax
Hi,
document.getElementById('c2').innerHTML = minutes + ':' + seconds
Hier fehlt wohl ein Strichpunkt am Schluss.
Nein. JavaScript hat automatische Semicolon Insertion.
Gruß!
So ich hab es geschafft! Für die die es interessiert folgt der Code.
Danke für die Antworten.
mfg
xastax
<script type='text/javascript'>
var end = new Date('"Fest Zeit eintragen"');
var timestamp; <?php echo "timestamp = " . (mktime() * 1000); ?>
function toSt2(n) {
s = '';
if (n < 10) s += '0';
return (s + n).toString();
}
function toSt3(n) {
s = '';
if (n < 10) s += '00';
else if (n < 100) s += '0';
return (s + n).toString();
}
function countdown() {
var d = new Date(timestamp);
count = Math.floor(end.getTime() - d.getTime());
if(count > 0) {
miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
seconds = toSt2(count%60); count = Math.floor(count/60);
minutes = toSt2(count%60); count = Math.floor(count/60);
hours = toSt2(count%24); count = Math.floor(count/24);
days = count;
timestamp += 1000;
document.getElementById('c1').innerHTML = days + ' TAGE';
document.getElementById('c2').innerHTML = hours + ':' + minutes + ':' + seconds
setTimeout('countdown()', 1000);
}
}
</script>