Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Odliczanie czasu... kolejny problem
Forum PHP.pl > Forum > Przedszkole
Puzi
Witam,
Znalazłem skrypt java do odliczania czasu i nie wiem jak go przerobić żeby był 24 godzinny a nie 12.

Kod do wklejenia na stronę:
Kod
<script language="JavaScript">
TargetDate = "05/01/2008 5:00 PM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script>
<script language="JavaScript" src="countdown.js"></script>


Plik countdown.js:
Kod
/*
Author: Robert Hashemian
http://www.hashemian.com/

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
********************************************************
Usage Sample:

<script language="JavaScript">
TargetDate = "05/01/2008 5:00 PM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script>
<script language="JavaScript" src="http://scripts.hashemian.com/js/countdown.js"></script>
*/

function calcage(secs, num1, num2) {
   s = ((Math.floor(secs/num1))%num2).toString();
   if (LeadingZero && s.length < 2)
     s = "0" + s;
   return "<b>" + s + "</b>";
}

function CountBack(secs) {
   if (secs < 0) {
     document.getElementById("cntdwn").innerHTML = FinishMessage;
     return;
   }
   DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
   DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
   DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
   DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));

   document.getElementById("cntdwn").innerHTML = DisplayStr;
   if (CountActive)
     setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
}

function putspan(backcolor, forecolor) {
  document.write("<span id='cntdwn' style='background-color:" + backcolor +
                 "; color:" + forecolor + "'></span>");
}

if (typeof(BackColor)=="undefined")
   BackColor = "white";
if (typeof(ForeColor)=="undefined")
   ForeColor= "black";
if (typeof(TargetDate)=="undefined")
   TargetDate = "12/31/2020 5:00 AM";
if (typeof(DisplayFormat)=="undefined")
   DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
if (typeof(CountActive)=="undefined")
   CountActive = true;
if (typeof(FinishMessage)=="undefined")
   FinishMessage = "";
if (typeof(CountStepper)!="number")
   CountStepper = -1;
if (typeof(LeadingZero)=="undefined")
   LeadingZero = true;


CountStepper = Math.ceil(CountStepper);
if (CountStepper == 0)
   CountActive = false;
var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
putspan(BackColor, ForeColor);
var dthen = new Date(TargetDate);
var dnow = new Date();
if(CountStepper>0)
   ddiff = new Date(dnow-dthen);
else
   ddiff = new Date(dthen-dnow);
gsecs = Math.floor(ddiff.valueOf()/1000);
CountBack(gsecs);


Proszę o pomoc bo ja wogóle nie znam się na javie
Sadu2
Ale przecież i tak sie wyświetla, że pozostało np

120 dni, 18 godzin, 15 minut itd....

Więc po co go chcesz przerabiać?
Puzi
Bo chce tam gdzie wpisuje date do której ma mi to odliczać chce abym wpisywał czas 24 godzinny a nie jakies tam AM czy PM.
Sadu2
A tak nie działa?

Kod
<script language="JavaScript">
TargetDate = "05/01/2009 24:00";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script>
Puzi
Nie

Jest takie coś:
Kod
<span id="cntdwn" style="color: navy; background-color: palegreen;">NaN   Days, NaN Hours, NaN Minutes, NaN Seconds.</span>
Sadu2
A u mnie działa:

http://siema.edl.pl/b.php
Puzi
A jak można zrobić takie instrukcje do tego skryptu:
1. Jak liczba dni równa jest 0 to żeby wyświetlało tylko godziny, minuty i sekundy
2. Jak liczba dni równa jest 0 oraz liczba godzin też 0 to żeby wyświetlało tylko minuty i sekundy
3. Jak liczba dni, godzin i minut jest równa 0 to żeby wyświetlało tylko sekundy

Proszę o pomoc
Cezar708
trzeba już kod JavaScript zmienić trochę na Twoje potrzeby:

na przykład, podmień funkcję CountBack(secs) na tę poniżej:

  1. <?php
  2. function CountBack(secs) {
  3. if (secs < 0) {
  4. document.getElementById("cntdwn").innerHTML = FinishMessage;
  5. return;
  6. }
  7. if ( secs < 60 ) { // czyli mniej niż minuta
  8. DisplayFormat = DisplayFormatLessThanMinute;
  9. } else if ( secs < 3600 ) { // czyli mniej niż 1 godzina
  10. DisplayFormat = DisplayFormatLessThanHour;
  11. } else if ( secs < 86400 ) { // czyli mniej niż 1 dzień
  12. DisplayFormat = DisplayFormatLessThanDay;
  13. } 
  14.  
  15. DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
  16. DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
  17. DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
  18. DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));
  19.  
  20. document.getElementById("cntdwn").innerHTML = DisplayStr;
  21. if (CountActive)
  22. setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
  23. }
  24. ?>


a następnie inicjacja skryptu będzie wyglądała tak:

  1. <script language="JavaScript">
  2. TargetDate = "05/01/2009 24:00";
  3. BackColor = "palegreen";
  4. ForeColor = "navy";
  5. CountActive = true;
  6. CountStepper = -1;
  7. LeadingZero = true;
  8. DisplayFormat = "%%D%% dni, %%H%% godzin, %%M%% minut, %%S%% sek.";
  9. FinishMessage = "It is finally here!";
  10. // poniżej dodałem:
  11. DisplayFormatLessThanDay = "%%H%% godzin, %%M%% minut, %%S%% sek."; // wyświetla gdy mniej niż 24 godziny
  12. DisplayFormatLessThanHour = "%%M%% minut, %%S%% sek."; // wyświetla gdy mniej niż 1 godzina
  13. DisplayFormatLessThanMinute = "%%S%% sek."; // wyświetla gdy mniej niż 1 minuta


mam nadzieję że pomogłem

Pozdrawiam
Cezar708
maniekl2
a ja mam pewną prośbe
Mógłby ktoś mi wytłumaczyć jak to wogóle działa, bo moja wiedza o js jest średnia smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.