Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Wyświetlanie dwóch liczników na raz
klapaucius
post 13.12.2011, 01:13:01
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mam taką funkcję do odliczania czasu czasu (jako parametr podajemy uniksowy czas, do którego nasza funkcja ma odliczać czas):
  1. function licznik($do_kiedy){
  2. return "
  3. <script type='text/javascript'>
  4.  
  5. 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)]}
  6. function R(t){
  7. t=CD(new Date(".($do_kiedy*1000)."),new Date());
  8. document.getElementById('licznik').innerHTML=''+t[2]+'m, '+t[3]+'s';
  9. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.location='google.pl';
  10. else setTimeout('R()',1e3);
  11. }
  12. onload=function(){R();}
  13.  
  14.  
  15. </script>
  16. <div id='licznik'></div>";
  17. }

No i funkcja działa elegancko, jednak co zrobić, jeśli na raz chcę wyświetlić kilka takich liczników? Teraz, gdy wywołam na raz kilka razy tę funkcję to wyświetla się tylko 1 odliczanie...
Domyślam się, że jest to zależne od tego, że wyświetla się do za pomocą div'u o ID = 'licznik'.. A jak wiemy ID może występować tylko raz... W takim razie można zrobić z tego CLASS zamiast DIV? Jeśli tak to jak?
Go to the top of the page
+Quote Post
Niktoś
post 13.12.2011, 01:18:40
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Kilka takich liczników dla jednego użytkownika?Po jakiego grzyba??Nie wiem,chcesz jakieś strefy czasowe?Powiedz coś więcej?
Czy to ma być ten sam czas tylko skopiowany,nie rozumiem za bardzo.

PS.Jak chcesz dublować divy to nie mozesz posługivać się id,musisz nadać klasę i do diva odwoływać się po klasie.
Skopiować diva możesz tak:
http://stackoverflow.com/questions/2161923...ered-in-the-div
a tam jest przykład jak to działa:
http://jsbin.com/isowo

Ten post edytował Niktoś 13.12.2011, 01:29:47
Go to the top of the page
+Quote Post
CuteOne
post 13.12.2011, 03:43:45
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Liczników, może być i 1000 ważne aby samo liczenie czasu odbywało się tylko raz

[JAVASCRIPT] pobierz, plaintext
  1. function licz(obj) { }
  2.  
  3. var e = [['div1',11],['div2',11],['div3',1000]];
  4. function dublujLiczenie() {
  5.  
  6. for(i=1; i<=e.length; i++) {
  7.  
  8. licz(e[i]);
  9. }
  10. setTimeout('dublujLiczenie()', 100);
  11. }
[JAVASCRIPT] pobierz, plaintext


coś w ten deseń

Ten post edytował CuteOne 13.12.2011, 03:45:06
Go to the top of the page
+Quote Post
klapaucius
post 13.12.2011, 22:50:38
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat(Niktoś @ 13.12.2011, 01:18:40 ) *
Kilka takich liczników dla jednego użytkownika?Po jakiego grzyba??Nie wiem,chcesz jakieś strefy czasowe?Powiedz coś więcej?
Czy to ma być ten sam czas tylko skopiowany,nie rozumiem za bardzo.


Chodzi mi o to, że na jednej stronie kilka razy chcę wywołać funkcję licz(), za każdym razem z innym parametrem. Przykładowo chcę aby jeden licznik odliczał mi czas do wydarzenia za tydzien, poniżej drugi licznik odliczał mi wydarzenie za 2 tygodnie, kolejny za 3 i analogicznie tak dalej... I chcę aby te wszystkie liczniki działały na raz.. w tym samym czasie i na jednej stronie...
Go to the top of the page
+Quote Post
--biocian--
post 31.12.2011, 13:53:06
Post #5





Goście







Reasumując i łącząc powyższe posty zrobiłem to tak:

CODE
<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 licz(obj) {
t=CD(new Date(obj[1]),new Date());
document.getElementById(obj[0]).innerHTML=' ' +t[0]+" dni, "+t[1]+" godz, "+t[2]+" min, "+t[3]+"s";
}

var e = [['div1','2011,12,31,16:00:00'],['div2','2012,12,31,10:00:00'],['div3','2012,01,01,15:38:00']];
function dublujLiczenie() {

for(i=0; i<e.length; i++) {

licz(e[i]);
}
setTimeout('dublujLiczenie()', 100);
}

</script>

<body onload='dublujLiczenie()'>
<div id='div1' style='border:1px solid red;'></div><br />
<div id='div2' style='border:1px solid red;'></div><br />
<div id='div3' style='border:1px solid red;'></div><br />
</body>


A reszta to już rola php (podanie do JS dat, czy nazw divów).
W sumie to forum PHP a wątek obrazuje głównie JS tongue.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:37