Autor | Zpráva | ||
---|---|---|---|
147477 Profil |
<html> <head> <meta charset="windows-1250"> <title>WWW</title> <script type="text/javascript"> function cdtd() { var xmas = new Date("July 16, 2013 21:12:00"); var now = new Date(); var timeDiff = xmas.getTime() - now.getTime(); if (timeDiff <= 0) { clearTimeout(timer); window.location = "http://google.cz"; clearTimeout(timer); } var seconds = Math.floor(timeDiff / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); hours %= 24; minutes %= 60; seconds %= 60; document.getElementById("daysBox").innerHTML = days; document.getElementById("hoursBox").innerHTML = hours; document.getElementById("minsBox").innerHTML = minutes; document.getElementById("secsBox").innerHTML = seconds; var timer = setTimeout('cdtd()',1000); } </script> </head> <body> <p style="text-align: center"><big><big> Zbývá <span id="daysBox"></span> dní, <span id="hoursBox"></span> hodin, <span id="minsBox"></span> minut a <span id="secsBox"></span> sekund. </big></big></p> <script type="text/javascript">cdtd();</script> </body> </html> ve výše uvedeném kódu bych rád vyřešil tři základní problémy: 1) Skloňování koncovek dle spisovné češtiny, tedy např. ke tvaru "sekund" přidat i "sekundy" a "sekundu". 2) ClearTimeout očividně nefunguje. Ještě než se stihne stránka přesměrovat, začne to nabíhat do záporných hodnot. 3) Tvar "0 dní, 0 hodin..." se mi moc nelíbí. Nešlo by nulové tvary ukrýt? Předem díky za parciální či dokonce komplexní řešení. |
||
Zechy Profil |
#2 · Zasláno: 16. 7. 2013, 19:46:57
Jednička je sekunda, 2 - 4 jsou sekundy, od 5 to je sekund, těžký napsat podmínku? :-)
|
||
147477 Profil |
Nějak takhle? (Škoda, že mi to nefunguje.)
<script type="text/javascript"> if (secsBox == 1) { document.write('Zbývá <span id="secsBox"></span> sekunda.'); } if (secsBox > 1 && secsBox < 5) { document.write('Zbývá <span id="secsBox"></span> sekundy.'); } if (secsBox > 4) { document.write('Zbývá <span id="secsBox"></span> sekund.'); } </script> |
||
petr 6 Profil |
#4 · Zasláno: 16. 7. 2013, 20:46:22
147477:
„Škoda, že mi to nefunguje.“ To je fakt škoda. Asi to máš rozbitý... „2) ClearTimeout očividně nefunguje. Ještě než se stihne stránka přesměrovat, začne to nabíhat do záporných hodnot.“ Ale funguje. Akorát poté, co timeout na řádku 15 a následně na řádku 17 "vyčistíš", tak ho na řádku 31 znovu nastavíš bez ohledu na hodnotu parametru timeDiff. |
||
147477 Profil |
Za duplicitu řádku 15 a 17 se samozřejmě omlouvám, jedná se čistě o nepozornost.
Když odstraním řádek 31, tak přestane odpočet fungovat v reálném čase a čísla se změní jen při obnovení stránky. Je nějaká možnost, jak to zafixovat? Teď mě napadá, že když úspěšně vyřeším problém číslo 1, vyřeším tím zároveň i trojku. |
||
petr 6 Profil |
#6 · Zasláno: 16. 7. 2013, 21:08:12
147477:
„Když odstraním řádek 31, tak přestane odpočet fungovat v reálném čase a čísla se změní jen při obnovení stránky.“ To je vcelku samozřejmé. „Je nějaká možnost, jak to zafixovat?“ Ano. Ošetřit ten řádek podmínkou v závislosti na timeDiff. |
||
_es Profil |
#7 · Zasláno: 16. 7. 2013, 21:54:07
147477:
„Nějak takhle? (Škoda, že mi to nefunguje.)“ Nejako tak, že napíšeš hocijaký očividný nezmysel a dúfaš, že sa niekto zľutuje nad tvojou lenivosťou a celé ti to napíše? |
||
147477 Profil |
Očividný? Tvořil jsem ho svědomitě přes půl hodiny. Takže skvělé fóry na večer (bez urážky).. :D
Beztak je tam jen nějaká banální chyna, jak to většinou bývá. |
||
margin Profil * |
#9 · Zasláno: 16. 7. 2013, 22:17:00
|
||
_es Profil |
147477:
Skús vyjsť z iného skriptu, trebárs z tohoto a podobne, ako je tam spravené skloňovanie dní, sprav aj skloňovanie sekúnd. |
||
petr 6 Profil |
|||
147477 Profil |
Téměř vše se mi podařilo hloubkovým přepracováním vyřešit, akorát bych potřeboval implementovat do tohoto kódu variantu "dny", "hodiny", "minuty" a "sekundy".
if(days != 0){out += days +" "+((days==1)?"den":"dní")+", ";} if(hours != 0){out += hours +" "+((hours==1)?"hodina":"hodin")+", ";} if(mins != 0){out += mins +" "+((mins==1)?"minuta":"minut")+", ";} if(secs != 0){out += secs +" "+((secs==1)?"sekunda":"sekund")+", ";} Vyřešeno: if(days != 0){out += days +" "+((days==1)?"den":(days > 1 && days < 5)?"dny":"dní")+", ";} if(hours != 0){out += hours +" "+((hours==1)?"hodina":(hours > 1 && hours < 5)?"hodiny":"hodin")+", ";} if(mins != 0){out += mins +" "+((mins==1)?"minuta":(mins > 1 && mins < 5)?"minuty":"minut")+", ";} if(secs != 0){out += secs +" "+((secs==1)?"sekunda":(secs > 1 && secs < 5)?"sekundy":"sekund")+", ";} |
||
Časová prodleva: 11 let
|
0