Autor | Zpráva | ||
---|---|---|---|
tajny spion Profil |
#1 · Zasláno: 16. 8. 2007, 22:15:41 · Upravil/a: tajny spion
Zdravim. Mnozi z vas si mysli: "OMG, to je určitě zase jeden z tech, kteri chteji JS hodiny na svym webu a nevedi jak."
Castecne mate pravdu. Ovsem ted vam to jeste "ulehcim". Mam dva kody, kazdy je v necem dobry a v necem spatny, potrebuju pomoc nejakeho skuseneho programatora v JS, aby mi je spolcil dohromady a vytvoril hodiny, ktere prejmou + vlastnosti a neziskaji zadne (minumum) -. Tady je kod 1: <html> <head> <script language="JavaScript"> <!-- function runClock() { today = new Date(); hours = today.getHours(); minutes = today.getMinutes(); seconds = today.getSeconds(); TimeValue = hours; TimeValue += ((minutes < 10) ? ":0" : ":") + minutes; TimeValue += ((seconds < 10) ? ":0" : ":") + seconds; document.getElementById("hodiny").innerText = TimeValue; window.setTimeout("runClock()",1000); } //--> </script> </head> <body onload="runClock()"> <span id="hodiny"></span> </body> </html> A tady kod 2: <html> <head> </head> <body> <script language="JavaScript"> <!-- function naplnCas (){ var datum = new Date(); // prave aktualni cas aktualniCas = datum.getHours() + "." + datum.getMinutes() + ":" + datum.getSeconds(); // vybral jsem z data, co potrebuju a obalil znamenky, aby se to prevedlo na retezec window.document.getElementById("cas").innerHTML = aktualniCas; // vypocitana hodnota se vklada jako html dovnitr elemnetu, ktery ma id "cas" } naplnCas(); //naplneni na zacatku window.setInterval("naplnCas()", 1000); //pravidelna zmena, 1000 je sekunda //--> </script> <span id="cas"></span> </body> </html> Kod 1 ma vyhody: dobry zpusob zapisu a nevyhody: nejde v FF. Kod 2 ma vyhody: jde ve FF i IE a nevyhody: spatny zpusob zapisu (jednociferne minuty a sekundy nemaji pred sebou "0") A ja vas zadam vytvorit kod takovy, aby sel v IE i FF (kod 2) a aby mel zpusob zapisu jako kod 1. Predem moc dekuju za snahu a za ochotu. |
||
future Profil * |
#2 · Zasláno: 16. 8. 2007, 22:38:56
//a co tento.... tu mas sekundy minuty hodiny aj s pociatocnou nulou
<html> <head> <script type="text/javascript"> <!-- function cas(){ var DatumCas = new Date(); var hodina = DatumCas.getHours(); if(hodina < 10) hodina = "0" + hodina; var minuta = DatumCas.getMinutes(); if(minuta < 10) minuta = "0" + minuta; var sekunda = DatumCas.getSeconds(); if(sekunda < 10) sekunda = "0" + sekunda; var vypis = hodina + ":" + minuta + ":" + sekunda document.getElementById("datumcas").innerHTML = vypis; setTimeout("cas()",1000); } </script> </head> <body onload="cas()"> <font id="datumcas"></font> </body> </html> |
||
peta Profil |
#3 · Zasláno: 17. 8. 2007, 08:35:53
tajny spion
http://peter-mlich.wz.cz/x/ww/js/JSpriklady.htm cast, co resi tu nulu je: TimeValue = hours; TimeValue += ((minutes < 10) ? ":0" : ":") + minutes; TimeValue += ((seconds < 10) ? ":0" : ":") + seconds; slova jsou promenne, muzes si je nazvat, jak chces --- Kod 1 ma vyhody: dobry zpusob zapisu a nevyhody: nejde v FF. Co treba analyza, zkoumani kodu? document.getElementById("hodiny").innerText = TimeValue; document.getElementById("datumcas").innerHTML = vypis; Jaky je mezi 1 a 2 rozdil? :) Jestlize "TimeValue", jak jsem psal prvne, je textovy nazev promenne a muze byt jakykoliv, pak nema vliv na funkcnost. Tj. v druhem pripade se to jmenuje "vypis". document.getElementById - je v obou pripadech shodne "hodiny" a "datumcas" jsou ceske nazvy, pravdepodobne take mohou byt jakekoliv a nemeli by mit vliv na funkcnost zbyva problem: .innerText .innerHTML jsou JS funkce, kazda jina. Ted je otazka, zda obe funguji v obou zminenych prohlizecich nebo ne. Pokud funguji obe spravne a JS konzola nehlasi chybu, pak je chyba nekde jinde. V opacnem pripade treba jen v nefunkcnim scriptu zmenit prave tuto funkci za tu druhou. --- kod2: naplnCas(); //naplneni na zacatku window.setInterval("naplnCas()", 1000); //pravidelna zmena, 1000 je sekunda Tohle ti nemuze fungovat, protoze chces pracovat s id=CAS, ale samotne CAS vznikne az po spusteni scriptu. <span id="cas"></span> JS konzola musi kricet, ze objekt neexistuje. Je mozne, ze to ale i pres to funguje, protoze pouzivas casovac. --- Mno, a ted vaznejsi vec. Uvaz. Ma ten cas na tve strance nejaky vyznam? Kazdy ma prece v liste datum, cas i kalendar. Dalsi problem. Je to javascriptovy cas. Jestlize si v PC nastavim 8.4.1991 5:00 tak mi tvuj program bude hlasit prave tento cas. Cili chybny. Kdybych si chtel seridit hodinky musim hledat na jine strance. Lze vyresit PHP a casem ze serveru, na kterem mas spustene stranky. Ovsem pak je to cas serveru a jestlize tam jej nekdo nastavi spatne... Pak uz to bude treti cas a realny se opet nedozvis. - jeden je v PC, tez zobrazuje JS - dalsi na serveru - a pak realny GTM na oficialnim serveru vuci kteremu se delaji synchronizace, obvykle (takze na serveru, bod 2, by mel byt spravny, ale nelze na to spolehat) 1 - jaky ma smysl zobrazovat stejny cas, jaky ma uzivatel v liste? 2 - jaky ma smysl zobrazovat cas serveru, pokud nemuzes zarucit jeho presnost? 3 - ma smysl zobrazovat realny cas? Ono to bude dost zdrzovat nez se spojis s oficialnim serverem a pozadas jej o presny cas. Pak uz ale moc presny nebude, kdyz se tvuj pozadavek zdrzi. (3) Tohle jedine by snad smysl melo, ale asi bych to nedaval do hlavni stranky, ale jen jako odkaz na centrum s presnym casem. |
||
tajny spion Profil |
#4 · Zasláno: 18. 8. 2007, 08:13:49
Wow vy ste se teda rozepsali. Hned jak budu mit cas, sednu k tomu a zacnu to studovat. Oboum moc diky. Jo jeste peto... je dobry ten script od future. A future, je dobra rada o pety? Schvalne jak se dohodnete :)
|
||
tajny spion Profil |
#5 · Zasláno: 18. 8. 2007, 15:48:10
future
Tvuj kod funguje ve vsech trech prohlizecich. Velice ti dekuju. peta Diky za otazky a odpovedi. Naoplatku se zase zeptam neco ja: je podle tebe lepsi dat cas pomoci JS (kdyz uz mi funguje) anebo zbytecne "zatezovat server" kvuli "realnemu" casu? |
||
future Profil * |
#6 · Zasláno: 18. 8. 2007, 17:45:41
tajny spion
moj nazor na hodinky je ten ze vobec ti ich tam netreba, aspon ja nedavam na svoje stranky ziadne, kto chce presny cas tak sa pozrie dole v pravo do listy. |
||
tajny spion Profil |
#7 · Zasláno: 20. 8. 2007, 19:58:46
future
A kdyz je v knihovne nebo skole (a tam to jde blbe) apod? Pak by se seknul "presny" serverovy cas. Co ty na to? |
||
Laman Profil |
#8 · Zasláno: 21. 8. 2007, 00:59:48
tajny spion
tvůj skript jsem nestudoval, ale obecně je imho nejlepší při načtení stránky načíst i serverový čas, ale pak počítat sekundy javascriptem. to je přijatelný kompromis. každopádně souhlasím s předchozími příspěvky, že žádné hodiny userovi na stránkách k ničemu nebudou |
||
tajny spion Profil |
#9 · Zasláno: 21. 8. 2007, 19:58:57
Laman
Dik. Problem je v tom, ze ovladam HTML, CSS, castecne PHP ale do taju JavaScriptu jsem jeste nezapadl. MOhl bys mi napsat script, nebo upravit tento: <html> <head> <script type="text/javascript"> <!-- function cas(){ var DatumCas = new Date(); var hodina = DatumCas.getHours(); if(hodina < 10) hodina = "0" + hodina; var minuta = DatumCas.getMinutes(); if(minuta < 10) minuta = "0" + minuta; var sekunda = DatumCas.getSeconds(); if(sekunda < 10) sekunda = "0" + sekunda; var vypis = hodina + ":" + minuta + ":" + sekunda document.getElementById("datumcas").innerHTML = vypis; setTimeout("cas()",1000); } </script> </head> <body onload="cas()"> <font id="datumcas"></font> </body> </html> |
||
Laman Profil |
#10 · Zasláno: 22. 8. 2007, 00:50:37 · Upravil/a: Laman
na první pohled mi ten skript připadá funkční, co je třeba upravit?
ale každopádně pro tu hybridní verzi by bylo lepší něco takovéhleho <script> //aktualizace: testoval jsem to jen chvilku a možná je tam nějaký bug, zrovna jsem jeden opravil |
||
tajny spion Profil |
#11 · Zasláno: 23. 8. 2007, 16:27:43
Laman
Dve veci: jaka hybridni verze (IE 6?) a jaky bug a cos vlastne pozmenil oproti mymu a proc? |
||
Laman Profil |
#12 · Zasláno: 23. 8. 2007, 18:58:19
hybridní verze je myšlena jako ta kombinující serverový čas s JavaScriptem
bug už žádný, v tom kódu jsem ho opravil. a hodiny se zdají jít v každou denní dobu správně a změnil jsem jen to počítací jádro - tys vždycky tahal aktuální čas PC, kdežto já se na něj zeptám jen na začátku a pak přičítám sekundy není to žádná zásadní změna |
||
tajny spion Profil |
#13 · Zasláno: 23. 8. 2007, 18:59:46
Laman
A ty tahas (tedy jednou "vytahnes") aktualni cas ze serveru? To by bylo lepsi nez z PC... jak to je udelany v tvym kodu? Server nebo PC? |
||
Laman Profil |
#14 · Zasláno: 24. 8. 2007, 00:36:35
v mém skriptu pracuju s obyčejným JS časem, to jest s časem z PC. ale když jsi řešil otázku PC vs server čas, přišlo mi nejlepší při načtení stránky získat ten serverový čas. je to věc php, to neovládám a nemám ani ponětí, jak to v něm bude fungovat. ale jakmile můj JS skript nakrmíš jakýmkoli časem v proměnné tod, bude už sám počítat každou další sekundu (zároveň vymažeš první 1-2 řádky toho JavaScriptu, budou zbytečné)
|
||
tajny spion Profil |
#15 · Zasláno: 24. 8. 2007, 15:46:52
Laman
Dik, si koumak... PHP se zacni ucit, pude ti to rychle, je to podobny jak JS. |
||
Časová prodleva: 18 let
|
0