[JS] Odliczanie czasu - Wersja do druku
+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript)
+--- Wątek: [JS] Odliczanie czasu (/thread-js-odliczanie-czasu--7262)
|
[JS] Odliczanie czasu - michalszyd - 15-07-2011
Witajcie,
Mam na stronie taki licznik (http://www.webmastertalk.pl/-javascript-odliczanie-czasu-t-20.html), który odlicza mi ile jeszcze do pewnej daty.
W zasadzie to mam takie dwa liczniki na jednej stronie.
I tu jest problem.
Jak włączony jest tylko 1 licznik, wszystko działa jak należy.
Ale gdy włączę dwa naraz to wtedy działa tylko ten drugi. Pierwszego wcale nie widać:/
U mnie wygląda to mniej więcej tak:
Kod: <script type="text/javascript">
function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
function R(t){
t=CD(new Date('.$new_date.'),new Date());
t1=t[1];
if (t[1]<10) t1="0"+t1;
t2=t[2];
if (t[2]<10) t2="0"+t2;
t3=t[3];
if (t[3]<10) t3="0"+t3;
if (new Date() < new Date('.$new_date.')) {
document.getElementById(\'training\').innerHTML=\'<font color="#FF0000">\'+t1+":"+t2+":"+t3+\'</font>\';
if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById(\'training\').innerHTML=\'<font color="#FF0000">00:00:00</font><META HTTP-EQUIV=Refresh CONTENT="1; URL=game">\';
else setTimeout(\'R()\',1e3);
}
else document.getElementById(\'training\').innerHTML=\'<font color="#FF0000">00:00:00</font>\';
}
onload=function(){R();}
</script>
<div id="training"></div>
Kod: <script type="text/javascript">
function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
function R(t){
t=CD(new Date('.$new_date.'),new Date());
t1=t[1];
if (t[1]<10) t1="0"+t1;
t2=t[2];
if (t[2]<10) t2="0"+t2;
t3=t[3];
if (t[3]<10) t3="0"+t3;
if (new Date() < new Date('.$new_date.')) {
document.getElementById(\'next_s\').innerHTML=\'<font color="#FF0000">\'+t1+":"+t2+":"+t3+\'</font>\';
if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById(\'next_s\').innerHTML=\'<font color="#FF0000">00:00:00</font><META HTTP-EQUIV=Refresh CONTENT="1; URL=game">\';
else setTimeout(\'R()\',1e3);
}
else document.getElementById(\'next_s\').innerHTML=\'<font color="#FF0000">00:00:00</font>\';
}
onload=function(){R();}
</script>
<div id="next_s"></div>
Jak zmodyfikować to coś, żeby mogły działać obydwa liczniki jednocześnie?
RE: [JS] Odliczanie czasu - Kartofelek - 15-07-2011
Kolego rzucasz się z widłami na kamień. Nie masz zielonego pojęcia o totalnych podstawach JS.
Powinienem cię odesłać do kursu byś w ogóle liznął ten język.
1) Wystarczy 1 taki skrypt - nieco go przerobimy
Kod: function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
function R(t,element){
t=CD(new Date('.$new_date.'),new Date());
t1=t[1];
if (t[1]<10) t1="0"+t1;
t2=t[2];
if (t[2]<10) t2="0"+t2;
t3=t[3];
if (t[3]<10) t3="0"+t3;
if (new Date() < new Date('.$new_date.')) {
document.getElementById(element).innerHTML=\'<font color="#FF0000">\'+t1+":"+t2+":"+t3+\'</font>\';
if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById(element).innerHTML=\'<font color="#FF0000">00:00:00</font><META HTTP-EQUIV=Refresh CONTENT="1; URL=game">\';
else setTimeout(\'R()\',1e3);
}
else document.getElementById(element).innerHTML=\'<font color="#FF0000">00:00:00</font>\';
}
onload=function(){
R('next_s');
R('training');
}
Dodałem tylko przekazanie elementu. Szczerze mówiąc nie wiem czy to 100% zadziała, bo:
Kod podany przez ciebie jest maksymalnie zwalony. Jest brzydki, głupi i w ogóle nie nadaje się do wrzucania na stronę (znaczniki font, else wymieszane z klamrami itp). Jest nielogiczny (np przekazujesz t w atrybucie, a zaraz od razu je ustawiasz)
Poza tym wrzucasz tutaj śmietnik wyjęty z pliku php, co pokazuje że to też źle robisz (jak mniemam echujesz cały powyższy kod co jest błędne).
Poza tym jest to kolejny raz kiedy męczysz forumowiczów tym samym skryptem...
|