JavaScript CountdownScript startet immer von vorne

Sithys

Captain Pro
Registriert
Dez. 2010
Beiträge
3.465
Hallo werte Community,
ich habe mir ein Countdownscript heruntergeladen. Allerdings bin ich jetzt nicht so der PHP-Profi... fakt ist: Drücke ich auf meiner Seite F5, so fängt der Counter auch wieder von vorne an. Ich dachte mir, dass man im Script irgendwo ein Datum setzen soll, auf das heruntergezählt wird, vielleicht bin ich auch blind und sehe es nicht...

Ich hoffe ihr könnt mir helfen!

PHP:
/*
 * jQuery The Final Countdown plugin v1.0.0 beta
 * http://github.com/hilios/jquery.countdown
 *
 * Copyright (c) 2011 Edson Hilios
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
(function($) {
  
  $.fn.countdown = function(toDate, callback) {
    var handlers = ['seconds', 'minutes', 'hours', 'days', 'weeks', 'daysLeft'];
    
    function delegate(scope, method) {
      return function() { return method.call(scope) }
    }
    
    return this.each(function() {
      // Convert
      if(!(toDate instanceof Date)) {
        if(String(toDate).match(/^[0-9]*$/)) {
          toDate = new Date(toDate);
        } else if( toDate.match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})\s([0-9]{1,2})\:([0-9]{2})\:([0-9]{2})/) ||
            toDate.match(/([0-9]{2,4})\/([0-9]{1,2})\/([0-9]{1,2})\s([0-9]{1,2})\:([0-9]{2})\:([0-9]{2})/)
            ) {
          toDate = new Date(toDate);
        } else if(toDate.match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})/) || 
                  toDate.match(/([0-9]{2,4})\/([0-9]{1,2})\/([0-9]{1,2})/)
                  ) {
          toDate = new Date(toDate)
        } else {
          throw new Error("Doesn't seen to be a valid date object or string")
        }
      }
      
      var $this = $(this),
          values = {},
          lasting = {},
          interval = $this.data('countdownInterval'),
          currentDate = new Date(),
          secondsLeft = Math.floor((toDate.valueOf() - currentDate.valueOf()) / 1000);
      
      function triggerEvents() {
        // Evaluate if this node is included in the html
        if($this.closest('html').length === 0) {
          stop(); // Release the memory
          dispatchEvent('removed');
          return;
        }
        // Calculate the time offset
        secondsLeft--;
        if(secondsLeft < 0) {
          secondsLeft = 0;
        }
        lasting = {
          seconds : secondsLeft % 60,
          minutes : Math.floor(secondsLeft / 60) % 60,
          hours   : Math.floor(secondsLeft / 60 / 60) % 24,
          days    : Math.floor(secondsLeft / 60 / 60 / 24),
          weeks   : Math.floor(secondsLeft / 60 / 60 / 24 / 7),
          daysLeft: Math.floor(secondsLeft / 60 / 60 / 24) % 7
        }
        for(var i=0; i<handlers.length; i++) {
          var eventName = handlers[i];
          if(values[eventName] != lasting[eventName]) {
            values[eventName] = lasting[eventName];
            dispatchEvent(eventName);
          }
        }
        if(secondsLeft == 0) { 
          stop();
          dispatchEvent('finished');
        }
      }
      triggerEvents();
      
      function dispatchEvent(eventName) {
        var event     = $.Event(eventName);
        event.date    = new Date(new Date().valueOf() + secondsLeft);
        event.value   = values[eventName] || "0";
        event.toDate  = toDate;
        event.lasting = lasting;
        switch(eventName) {
          case "seconds":
          case "minutes":
          case "hours":
            event.value = event.value < 10 ? '0'+event.value.toString() : event.value.toString();
            break;
          default:
            if(event.value) {
              event.value = event.value.toString();
            }
            break;
        }
        callback.call($this, event);
      }
      
      function stop() {
        clearInterval(interval);
      }

      function start() {
        $this.data('countdownInterval', setInterval(delegate($this, triggerEvents), 1000));
        interval = $this.data('countdownInterval');
      }
      
      if(interval) stop();
      start();
    });
  }
})(jQuery);

Vielen Dank im Voraus!


Klasse...problem gelöst -.- ich Depp!

PHP:
currentDate = new Date('January 28, 2014 00:01:00'),


- NEUES PROBLEM -
... vom 09 - 28.01.2014 sinds doch keine 6 Tage... was ist hier los? :D

Und der Counter fängt auch neu an zu zählen nachdem man aktualisiert hat :( oh man
 
Zuletzt bearbeitet:
Du sollst ja auch GAR NICHT an dem Plugin selbst herumpfuschen. Du sollst einfach nur machen, was da in der Readme steht...

Code:
<div id="getting-started"></div>
<script type="text/javascript">
  $('#getting-started').countdown('2015/01/01', function(event) {
    $(this).html(event.strftime('%w weeks %d days %H:%M:%S'));
  });
</script>

Klarer Fall von OSI Layer 8 Problem.
 
Daaron schrieb:
Du sollst ja auch GAR NICHT an dem Plugin selbst herumpfuschen. Du sollst einfach nur machen, was da in der Readme steht...

Code:
<div id="getting-started"></div>
<script type="text/javascript">
  $('#getting-started').countdown('2015/01/01', function(event) {
    $(this).html(event.strftime('%w weeks %d days %H:%M:%S'));
  });
</script>

Klarer Fall von OSI Layer 8 Problem.

Aha, und kannst du mir jetzt noch verraten, wo der Code herkommt den du hast? Ich habe nur den oben angegebenen + jquery.backstretch.min.js; jquery-1.8.2.min.js; scripts.js

/Edit: Ich habe ein komplettes Template gezogen und nicht nur das Script, aber **** ********* mit 8.000+ postings macht anscheinend Spaß!
Muss ich jetzt noch eine getting.started Datei erstellen?!
 
Zuletzt bearbeitet:
Daaron schrieb:
Wie wärs, wenn du mal die Sachen liest, anstatt sie nur zu posten...

jQuery The Final Countdown plugin v1.0.0 beta
* http://github.com/hilios/jquery.countdown

Ich habe die Sachen gelesen. Allerdings sind das für mich alles böhmische Dörfer...so leid mir das tut, aber ich verstehe es nicht. Ich bin schon des Googelns mächtig, und habe mir natürlich ein paar Sachen angeschaut.

Es geht aber generell um folgendes:

Eine Under Construction Seite - ist ja klar.
Dafür habe ich ein fertiges Template heruntergeladen, und dort in der HTML/PHP Datei entsprechen die Sachen angepasst (E-Mail Adresse für Newsletter, die Texte übersetzt etc.) und dort war eben auch das Script mit dabei, aber leider keine Anleitung. Nur die index + Unterordner.

Die Seite liegt auf Webspace von 1und1.

Wie gesagt, ich bin einfach ratlos, Bower installieren? Kann ich doch gar nicht, ich bin ja nicht auf dem Server, sondern nur per FTP damit verbunden.
Ergänzung ()

/Closed - Problem gelöst.
 
...und genau DESHALB werden Leute nicht schlecht dafür bezahlt, um Webseiten zu erstellen...
 
Zurück
Oben