Countdown aktualisiert nicht von selbst

Lil-rich

Erfahrenes Mitglied
Hallo Leute :)

Hab mal wieder nen Prob... diesmal mit JavaScript. Und zwar hab ich mir einen Counter gemacht der mir den Log-Out Zeitpunkt und die Uhrzeit anzeigt. Die Dinger funktionieren wunderbar, nur ich wollte halt dass er selbstständig runterzählt (bzw. aktualisiert) und nich, dass man immer per F5 aktualisieren muss *fg* Hoffentlich findet jemand den Fehler... Er sollte jede Sekunde aktualisieren

HTML:
[...]
function logincount() {
  time = '$the_time';
  end = '$log_out';
  count = Number(end) - (Number(time) - 7200);
  if(count > 0) {
    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);
    document.getElementById('logout').innerHTML = hours + ':' + minutes + ':' + seconds;
    setTimeout('logincount()', 50);
  } else {
    document.getElementById('logout').innerHTML = 'beendet';
  }
}
function thetime() {
  time = '$the_time';
  seconds = toSt2(time%60); time = Math.floor(time/60);
  minutes = toSt2(time%60); time = Math.floor(time/60);
  hours = toSt2(time%24); time = Math.floor(time/24);
  document.getElementById('time').innerHTML = hours + ':' + minutes + ':' + seconds;
  setTimeout('thetime()', 50);
}
[...]
<body onload='logincount(); thetime();'>

Danke schonmal
 
Zuletzt bearbeitet:
Definiere die Variablen time/end mal ausserhalb der Funktionen, ansonsten kann sich da ja nie etwas ändern, weil die Werte der Variablen immer gleich bleiben.
 
Hmmm wenn ich beide Variablen auslagere (time und end) dann verstellt sich alles, countet aber trotzdem nicht... wenn ich nur die Variable "end" aus der Funktion nehme und vorher einfüge, dann bleibt die Uhr zwar richtig aber countet wiederrum auch nicht... :(
 
Hi,

Du musst auch irgendwann noch die Variable time hochzählen.

Ausserdem verwendest Du die globale Variable time in der Funktion thetime und veränderst sie
dort. Besser Du übergibst sie einer lokalen Variable und arbeitest mit dieser weiter.

Mein Vorschlag:
Code:
<?php
  $the_time = time();
  $log_out = $the_time;
  echo("time = $the_time;\n");
  echo("end = $log_out;\n");
?>

function logincount() {
   count = Number(end) - (Number(time) - 7200);
  if(count > 0) {
    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);
    document.getElementById('logout').innerHTML = hours + ':' + minutes + ':' + seconds;
    time++;
    setTimeout('logincount()', 50);
  } else {
    document.getElementById('logout').innerHTML = 'beendet';
  }
}
function thetime() {
  var timeHelp = time;
  seconds = toSt2(timeHelp%60); timeHelp = Math.floor(time/60);
  minutes = toSt2(timeHelp%60); timeHelp = Math.floor(time/60);
  hours = toSt2(timeHelp%24); timeHelp = Math.floor(time/24);
  document.getElementById('time').innerHTML = hours + ':' + minutes + ':' + seconds;
  setTimeout('thetime()', 50);
}
Ciao
Quaese
 
Danke ! Hab nun verstanden wieso es nicht funktioniert hat... hab es nun einfach korrigiert. Alles funktioniert perfekt :)

HTML:
[...]
function logincount(end) {
  time = Math.round(new Date() / 1000);
  count = Number(end) - Number(time);
  if(count > 0) {
    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);
    document.getElementById('logout').innerHTML = hours + ':' + minutes + ':' + seconds;
    setTimeout('logincount($log_out)', 80);
  } else {
    document.getElementById('logout').innerHTML = 'beendet';
  }
}
function thetime() {
  time = new Date();
  hours = time.getHours();
  minutes = time.getMinutes();
  seconds = time.getSeconds();
  
  if(hours < 10) {
    var null1 = 0;
  } else {
    var null1 = '';
  }
  
  if(minutes < 10) {
    var null2 = 0;
  } else {
    var null2 = '';
  }
  
  if(seconds < 10) {
    var null3 = 0;
  } else {
    var null3 = '';
  }
  
  document.getElementById('time').innerHTML = null1 + hours + ':' + null2 + minutes + ':' + null3 + seconds;
  setTimeout('thetime()', 80);
}
[...]
<body onload='logincount($log_out); thetime();'>
[...]
 

Neue Beiträge

Zurück