Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[JS] Odliczanie czasu
#1
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?
Odpowiedz
#2
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...
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Fullsize background slider z możliwością ustawienia czasu dla każdego elementu atp 2 3,700 24-09-2013, 18:25
Ostatni post: atp
Question [JS] Liczenie czasu od daty adash0 2 4,568 23-07-2011, 12:51
Ostatni post: adash0
  [JS] Odliczanie czasu michalszyd 7 6,634 03-07-2011, 17:18
Ostatni post: michalszyd
  [problem]JavaScript Liczenie czasu R_Rafalsky 4 3,953 22-02-2011, 15:54
Ostatni post: R_Rafalsky
  [JS]e czasu, wyskakujące okno po zakończeniu lukaszsss 1 2,380 16-01-2011, 04:52
Ostatni post: Kartofelek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl