Alternatives Timer Script am besten in Jquery

CaptNick

Mitglied
Hallo, bin auf der Suche nach einem Timer Script der bis zu einem bestimmten Timecode h:m:s auf 0 runterzählt.
derzeit benutze ich dieses Modell

Code:
  function start() {
      for ( var i = 1; i <= 10; i++ ) {
          if ( document.getElementById( "timer"+i )) {
              var params = document.getElementById( "timer"+i ).title.split( "_" );
              var time = parseInt( params[1] );
              var type = params[3];
              timer( "timer"+i, time, type );
          }
      }
  }

  function timer( timer, time, type ) {
      var t = time;

      if ( t > 0 ) {
          var h = Math.floor( t / 3600 );
          var m = Math.floor( ( t - h * 3600 ) / 60 );
          var s = t - h * 3600 - m * 60;

          if ( type == 1 ) {
              if ( h == 0 ) h = "";
              else h = h + " Stunden ";

              if ( m == 0 && h == 0 ) m = "";
              else m = m + " Minuten ";

              if ( s == 0 && m == 0 && h == 0 ) s = "";
              else s = s + " Sekunden";

              document.getElementById( timer ).firstChild.nodeValue = h + m + s;
          }
          else if ( type == 2 ) {
              if ( m < 10 ) m = "0" + m;
              if ( s < 10 ) s = "0" + s;

              document.getElementById( timer ).firstChild.nodeValue = h + ":" + m + ":" + s;
          }
          else if ( type == 3 ) {
              if ( h == 0 ) h = "";
              else h = h + " Stunden ";

              if ( m == 0 && h == 0 ) m = "";
              else m = m + " Minuten ";

              if ( s == 0 && m == 0 && h == 0 ) s = "";
              else s = s + " Sekunden";

              document.getElementById( timer ).firstChild.nodeValue = h + m + s;
          }
          else if ( type == 4 ) {
              if ( m < 10 ) m = "0" + m;
              if ( s < 10 ) s = "0" + s;

              document.getElementById( timer ).firstChild.nodeValue = h + ":" + m + ":" + s;
          }
          else if ( type == 5 ) {
              if ( m < 10 ) m = "0" + m;
              if ( s < 10 ) s = "0" + s;

              document.getElementById( timer ).firstChild.nodeValue = h + ":" + m + ":" + s;
          }

          var time = t - 1;
          window.setTimeout( 'timer( "'+timer+'", "'+time+'", "'+type+'" )', 1000 );
      }
      else {
          if ( type == 1 ) document.getElementById( timer ).firstChild.nodeValue= "Fertiggestellt";
          else if ( type == 2 ) document.getElementById( timer ).firstChild.nodeValue= "0:00:00";
          else if ( type == 3 ) window.setTimeout( 'timer( "'+timer+'", "180", "'+type+'" )', 1000 );
          else if ( type == 4 ) window.setTimeout( 'timer( "'+timer+'", "180", "'+type+'" )', 1000 );
          else if ( type == 5 ) document.getElementById( timer ).firstChild.nodeValue= "Fertig";
      }
  }

dieser hat den Nachteil wenn man mehrere laufen hat wirds beim Reload asynchron mit der Zeit, außerdem gibts Problem wenn man ajax content nachläd und das start(); neu intialisiert springen die Zeiten immer hin und her. Btw der Code oben ist auch nicht von mir den habe ich nur mal irgendwann übernommen.

Eine "einfachere" Lösung am besten in jquery wäre mir willkommen.
 
Zurück