tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
865
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Partyman Partyman ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    10
    Hi, was muss ich bei diesem Script ändern wenn bei Stunden, Minuten und Sekunden jeweils eine 0 vorgestellt werden soll wenn die Anzahl kleiner als 10 ist?


    also 09Sek statt nur 9sek


    PHP-Code:
    <style style="text/css">

    .lcdstyle{ /*Example CSS to create LCD countdown look*/
    background-color:black;
    color:lime;
    font: bold 18px MS Sans Serif;
    padding: 3px;
    }

    .lcdstyle sup{ /*Example CSS to create LCD countdown look*/
    font-size: 80%
    }

    </style>

    <script type="text/javascript">

    function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode){
    if (!document.getElementById || !document.getElementById(container)) return
    this.container=document.getElementById(container)
    var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s"time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
    this.localtime=this.serverdate=new Date(servertimestring)
    this.targetdate=new Date(targetdate)
    this.debugmode=(typeof debugmode!="undefined")? 1 : 0
    this.timesup=false
    this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time
    this.updateTime()
    }

    cdLocalTime.prototype.updateTime=function(){
    var thisobj=this
    this.localtime.setSeconds(this.localtime.getSeconds()+1)
    setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
    }

    cdLocalTime.prototype.displaycountdown=function(baseunit, functionref){
    this.baseunit=baseunit
    this.formatresults=functionref
    this.showresults()
    }

    cdLocalTime.prototype.showresults=function(){
    var thisobj=this
    var debugstring=(this.debugmode)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : ""

    var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds
    if (timediff<0){ //if time is up
    this.timesup=true
    this.container.innerHTML=debugstring+this.formatresults()
    return
    }
    var oneMinute=60 //minute unit in seconds
    var oneHour=60*60 //hour unit in seconds
    var oneDay=60*60*24 //day unit in seconds
    var dayfield=Math.floor(timediff/oneDay)
    var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
    var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
    var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
    if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
    hourfield=dayfield*24+hourfield
    dayfield="n/a"
    }
    else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
    minutefield=dayfield*24*60+hourfield*60+minutefield
    dayfield=hourfield="n/a"
    }
    else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
    var secondfield=timediff
    dayfield=hourfield=minutefield="n/a"
    }
    this.container.innerHTML=debugstring+this.formatresults(dayfield, hourfield, minutefield, secondfield)
    setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
    }

    /////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

    //Create your own custom format function to pass into cdLocalTime.displaycountdown()
    //Use arguments[0] to access "Days" left
    //Use arguments[1] to access "Hours" left
    //Use arguments[2] to access "Minutes" left
    //Use arguments[3] to access "Seconds" left

    //The values of these arguments may change depending on the "baseunit" parameter of cdLocalTime.displaycountdown()
    //For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
    //For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc

    //1) Display countdown using plain text
    function formatresults(){
    if (this.timesup==false){//if target date/time not yet met
    var displaystring="<span style='background-color: #CFEAFE'>"+arguments[1]+" hours "+arguments[2]+" minutes "+arguments[3]+" seconds</span> left until launch time"
    }
    else{ //else if target date/time met
    var displaystring="Launch time!"
    }
    return displaystring
    }

    //2) Display countdown with a stylish LCD look, and display an alert on target date/time
    function formatresults2(){
    if (this.timesup==false){ //if target date/time not yet met
    var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until launch time"
    }
    else{ //else if target date/time met
    var displaystring="" //Don't display any text
    alert("Launch time!") //Instead, perform a custom alert
    }
    return displaystring
    }

    </script>
     

  2. #2
    Desert-hacker Desert-hacker ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    25
    Interessant ist vermutlich das hier:

    Code :
    1
    2
    3
    
    if (this.timesup==false){ //if target date/time not yet met
    var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until launch time"
    }

    Genauer: "+arguments[3]+"

    Ich vermute mal, das sind die Sekunden :P
    Ich würde das so umsetzen:

    Code :
    1
    2
    3
    4
    5
    6
    
    if (this.timesup==false){ //if target date/time not yet met
    if(arguments[3] < 9) { //Testen ob die sekunden < als 9 sind
       arguments[3] = 0+arguments[3]; //Wenn ja, einfach eine 0 vorn dran
    }
    var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until launch time"
    }

    Ich hoffe das hilft dir

    PS: falsches Forum :P
     

  3. #3
    Partyman Partyman ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    10
    Dachte schon das wäre die Lösung weil sie schlüssig klingt, aber es bewirkt keine Änderung. Bei den Sekunden wird weiterhin keine 0 vorgestellt.

    Hat einer noch eine andere Lösung oder findet den Fehler in der letzten Lösung?
    Geändert von Partyman (30.01.08 um 22:32 Uhr)
     

  4. #4
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Hm also leider habe ich keine Lösung aber ich vermute der Fehler in der genannten Lösung liegt daran das eine Addition mit dem Inhalt durchgeführt wird und da jede Zahl mit 0 addiert diesselbe Zahl ist ändert sich auch nichts.
    Ich kann kein JavaScript und daher erkenne ich auch nicht wo das Array "arguments" gefüllt wird.

    Eine Lösung wäre bei der Ausgabe den Sekundenwert abzufragen und dann jeweils eine 0 davor schreiben, schöner bzw. eleganter wäre sicherlich den Wert schon passend zu speichern nur habe ich dafür auch keinen Ansatz

    Eine unschöne aber hoffentlich funktionierende Variante könnte so aussehen:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    //1) Display countdown using plain text
    function formatresults()
    {
      if (this.timesup==false)
      {
         if (arguments[3] < 10)
         {
            var displaystring="<span style='background-color: #CFEAFE'>"+arguments[1]+" hours "+arguments[2]+" minutes 0"+arguments[3]+" seconds</span> left until launch time"
         }
         else 
         {
            var displaystring="<span style='background-color: #CFEAFE'>"+arguments[1]+" hours "+arguments[2]+" minutes "+arguments[3]+" seconds</span> left until launch time"
         }
      }
      else { 
               var displaystring="Launch time!"
             }
    return displaystring
    }
    Ist absolut kein PHP

    mfg
    Geändert von Online-Skater (30.01.08 um 22:54 Uhr)
     

  5. #5
    Partyman Partyman ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    10
    Danke euch für den Support!
     

Ähnliche Themen

  1. CountDown Sekunden
    Von Sasser im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 25.06.08, 14:07
  2. Sekunden Countdown?!
    Von uafsc im Forum PHP
    Antworten: 6
    Letzter Beitrag: 28.08.07, 11:40
  3. Sekunden Countdown
    Von kTULu im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 08.10.04, 17:13
  4. Antworten: 9
    Letzter Beitrag: 24.09.04, 17:46
  5. X Sekunden Countdown
    Von Schaelle im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 02.09.04, 15:19