xastax: JS Countdown

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

  1. 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ß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt
    1. 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

      1. 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ß,

        frankx

        --
        tryin to multitain  - Globus = Planet != Welt
  2. 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

    1. 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

    2. Hi,

      document.getElementById('c2').innerHTML = minutes + ':' + seconds
      Hier fehlt wohl ein Strichpunkt am Schluss.

      Nein. JavaScript hat automatische Semicolon Insertion.

      Gruß!

  3. 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>