• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Counter??

Status
Für weitere Antworten geschlossen.

dasch

Neues Mitglied
Ich hätte da mal eine Frage zu einem Counter:
Ich suche schon seit stunden bei google nach einem script für ein countdown, aber ich finde immer nur welche, die nur einmal auf ein event zählen können :(
Ich suche aber ein Counter der auf ein Event das einmal pro woche ist hinzählt. (Wenn dieses Event gewesen ist, das er dann von vorne anfängt zu dem nächsten event weiterzählt)
Bsp zu diesen beiden terminen:
Montag 07.50 Event 1
Freitag 20.15 Event 2
Wenn er bi montag gezählt hat soll er nach Freitag weiterzählen, und dann wieder zu Montag Freitag Montag...

Wäre das irgendwie möglich??
 
auch mit PHP machbar... willse, dass er dann immernoch runterzählt, während man auf der Seite ist oder beim neu aufrufen halt die aktuelle zeit steht seid dem Aufrufen.

Denn ohne das Runterzählen kann ich dir das Script in PHP basteln
 
Interaktiv != PHP

Er möchte, dass sich die Zeit "bewegt"/ändert.

MfG, matibaski


edit: Hab da mal so per Zufall 'ne Seite gefunden, die nen Counter hatte.
Hier ist der Quelltext-Teil:
HTML:
<script language=JavaScript>
var message="";
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}
</script>
<script type='text/javascript'>
var end = new Date('April 01, 2007 19:00:00');
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() {
  d = new Date();
  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('c1').innerHTML = days + 'd';
    document.getElementById('c2').innerHTML = hours + 'h ' + minutes + 'min ' + seconds + 's'
    setTimeout('countdown()', 50);
  }
}
</script><body onload='countdown();'>
Hier, die Seite selbst: (Du solltest sie in weniger als 8 Tagen besuchen. Die haben das nur da, wegen einem Update)
http://www.habbocenter.ch
 
Zuletzt bearbeitet von einem Moderator:
Sorry, aber mit Java Script kenne ich mich nicht wirklich gut aus, könntest du mir das mal erklären??
 
Zuletzt bearbeitet:
Ich bin auch nicht die helle Leuchte.
Kann dir da nicht vieles erklären.

Irgendjemand der sich mit JS gut auskennt, wird dir sicherlich erklären können.


MfG, matibaski
 
@matibaski: das Script geht nur mit 'nem festen Datum.

Ich hab mal 'n Script dafür geschrieben und auf meiner Seite hochgeladen.

Hier der Code.

HTML:
<html>
   <head>
      <title>Test</title>
      <script type="text/javascript">
         // Klasse um ein Event besser zu verwalten
         function Event (D, H, M, Name) {
            this.Day = D;
            this.Hour = H;
            this.Minute = M;
            this.Name = Name;
         }

         /*
          * Klasse EventHandler
          * verwaltet Events, es kann nur 1 Event pro Tag geben,
          * ansonsten funktioniert die Klasse nicht richtig
          */
         function EventHandler()
         {
            var EventList = new Array();
            var EventID = -1;
            var EventStart = 0;

            /*
             * Den Namen des durch nextEvent() ermittelten Events bestimmen
             */
            function getEventName()
            {
               return EventList [EventID].Name;
            }
            
            this.getEventName = getEventName;

            /*
             * Den Start des durch nextEvent() ermittelten Events bestimmen
             */
            function getEventStart()
            {
               return EventStart;
            }
            
            this.getEventStart = getEventStart;

            /*
             * Event hinzufügen,
             * nextEvent() muss danach aufgerufen werden,
             * damit das aktuelle Event auch geladen ist
             */
            function addEvent (E)
            {
               EventList.push (E);
            }
            
            this.addEvent = addEvent;

            /*
             * nächstes Event bestimmen
             */
            function nextEvent() {
               var Now = new Date();
               var Day = Now.getDay();

               // nächstes Event bestimmen (nur 1 pro Tag!)
               var Nearest = 21;
               var NearestID = -1;
               for (var i = 0; i < EventList.length; ++i) {
                  var Dif = EventList [i].Day - Day;
                  // tritt das Event erst nächste Woche ein?
                  if (Dif < 0)
                     Dif += 7;

                  if (Dif < Nearest) {
                     // continue, falls das Event heute statt findet
                     // und bereits vorbei ist
                     if (0 == Dif &&
                           (EventList [i].Hour < Now.getHours())
                            || (EventList [i].Hour == Now.getHours()
                                 && EventList [i].Minute <= Now.getMinutes()))
                     {
                        continue;
                     }
                        
                     Nearest = Dif;
                     NearestID = i;
                  }
               }

               // Datum anlegen, dass das nächste Event enthält
               // laut selfHTML muss der Tag zwischen 0 und 30 liegen,
               // IE und FF haben Überlaufe aber richtig behandelt
               var Event = new Date (Now.getFullYear(),
                                       Now.getMonth(),
                                       Now.getDate() + Nearest,
                                       EventList [NearestID].Hour,
                                       EventList [NearestID].Minute,
                                       0);
                                       
               EventID = NearestID;
               EventStart = Event.getTime();
            }
            
            this.nextEvent = nextEvent;
         }

         // Event-Handler, wird in startEventTimer() initialisiert
         var EHandler = null;
         
         // das Timer Objekt,
         // wird benötigt, falls der Timer angehalten werden soll, etc
         var timer = null;

         /*
          * Timer initialisieren, EventListe laden
          */         
         function startEventTimer()
         {
            EHandler = new EventHandler();
            
            // Event 1 hinzufügen (Montag, 15:18 Uhr, Titel: "Montag"
            EHandler.addEvent (new Event (1, 15, 8, "Montag"));
            // Event 2 hinzufügen (Donnerstag, 14:00 Uhr, Titel: "Donnerstag"
            EHandler.addEvent (new Event (4, 14, 00, "Donnerstag"));
            // nächstliegende Event laden
            EHandler.nextEvent();
            // Timer initialisieren
            timer = window.setInterval("update()", 1000);
         }
         
         /*
          * verantwortlich für den Countdown, gesetzt in startEventTimer()
          * aktualisiert die Meldung auf der Seite
          */
         function update()
         {
            var Countdown = EHandler.getEventStart() - (new Date()).getTime();

            // Event ist bereits eingetreten?
            // dann nächstes Event laden
            if (0 >= Countdown) {
               EHandler.nextEvent();
               Countdown = EHandler.getEventStart() - (new Date()).getTime();
            }
            
            // Meldung ausgeben
            var Message = "Naechstes Event: " + EHandler.getEventName() + "<br />";
            Message += "Noch " + Math.floor (Countdown / (60 * 60 * 1000)) + " Stunden, ";
            Message += Math.floor (Countdown / (60 * 1000)) % 60 + " Minuten und ";
            Message += Math.floor (Countdown / (1000)) % 60 + " Sekunden";
            document.getElementById ("Event").innerHTML = Message;
         }
         
         startEventTimer();
      </script>
   </head>
   <body>
      
      <div id="Event"></div>
   </body>
</html>
Einzige Einschränkung: Es darf nur 1 Event pro Tag geben.

Ich hoffe die Kommentare sind einigermaßen verständlich, in der Funktion startEventTimer() werden die Ereignisse hinzugefügt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben