Matty: window.setInterval "verlangsamen" zur Laufzeit

Hallo Leute,

ich versuche gerade eine Timestamp-Differenz in einem DIV-Container darzustellen und alle x-Sekunden zu aktualisieren. Das ganze hat auch reibungslos funktioniert, bis ich es ein bisschen "performater" machen wollte.

Ich dachte mir, es würde reichen wenn die Differenz größer einer Stunde ist, den Timer nur alle Minute aktualisieren zu lassen, und wenn die Differenz unter 5 Minuten ist, dann zeig ich die Sekunden auch an, und lass ihn sekündlich aktualisieren.

Hier mein Code:

var smoke_timer = 0;
var smoke_time = 0;

function CountSmoke(id, interval)
{

showDIVsmokeTime(  (smoke_time-Math.floor(interval/1000)));
  smoke_time = smoke_time - (Math.floor(interval/1000));

if ( smoke_time <= 0)
  {
    window.clearInterval(smoke_timer);
    xajax_smokeDone();
  }
  else if (smoke_time < 300)
  {
     window.clearInterval(smoke_timer);
     smoke_timer =window.setInterval("CountSmoke('"+id+"',"+1000+")");
  }
  else if (smoke_time > 300 && smoke_time < 3600)
  {
     window.clearInterval(smoke_timer);
     smoke_timer = window.setInterval("CountSmoke('"+id+"',"+60000+")");
  }
}

function init(){
smoke_time = {$bong_diff.diff};
 smoke_timer = window.setInterval("CountSmoke('"+div_smoketime+"',smoke_interval)", smoke_interval);
}

Die Init steht im body.onLoad ...

das ganze geht auch solange ich den Teil in der Funktion auskommentiert lasse. Sobald der einkommentier ist, wird die Differenz kurz richtig angezeigt und nach ca ner halben Sekunde zählt die Zeit sofort runter auf 0 ... Jemand ne Idee warum? Liegt das daran dass ich clearInterval und gleich danach wieder setInterval mache? Wie würdet ihr das lösen, dass man den Interval zur Laufzeit "anpasst"?

Danke für jegliche Hinweise und Infos :)

  1. Mit "auskommentiertem Teil" meine ich übrigens das hier:

    // else if (smoke_time < 300)
    //  {
    //     window.clearInterval(smoke_timer);
    //     smoke_timer =window.setInterval("CountSmoke('"+id+"',"+1000+")");
    //  }

  2. hi,

    else if (smoke_time < 300)
      {
         window.clearInterval(smoke_timer);
         smoke_timer =window.setInterval("CountSmoke('"+id+"',"+1000+")");
      }
      else if (smoke_time > 300 && smoke_time < 3600)
      {
         window.clearInterval(smoke_timer);
         smoke_timer = window.setInterval("CountSmoke('"+id+"',"+60000+")");

    Du übergibst window.setInterval hier überhaupt keinen Wert für den zweiten Parameter, die Intervalllänge.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke wahsaga... ich habs eben selbst gesehen... mann das hat mich jetzt zwei Stunden aufgehalten dieser Flüchtigkeitsfehler :(

      Thanks as well :o)