Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Problem ze zmiennymi w pluginie jQuery CountDown
Forum PHP.pl > Forum > Przedszkole
ornitolog
Mam problem ze zmiennymi w pluginie jQuery CountDown, służy on do odliczania, ustawia się czas w którym odliczanie dobiegnie końca i skrypt generuje licznik. Potrzebuje napisać skrypt który doda określoną ilość czasu do obecnego i będzie do niego odliczał, dla przykładu dałem odliczanie do czasu +2h od czasu obecnego:

Kod
var czas = new Date();

            czas = new Date(czas.getTime() + 7200000);

            var day = czas.getDay();
            var month = czas.getMonth();
            var year = czas.getFullYear();
            var hour = czas.getHours();


            
            jQuery(document).ready(function() {
                jQuery('#countdown').countDown({
                    targetDate: {
                        'day':         day,
                        'month':     month,
                        'year':     year,
                        'hour':     hour,
                        'min':         0,
                        'sec':         0
                    }
                });
                
            });

niestety licznik ustawia się na 0 wiec nie działa, nie mam pomysłu jak to poprawić, mógłbym oczywiście zrobić to przez PHP ale muszę uwzględniać czas ustawiony na komputerze odwiedzającego. Link do strony na której to jest http://ak5.pl/va4.html macie może jakiś pomysł ?
werdan
Do miesiaca dodaj +1, styczeń to 0!

Mozesz sobie testowac wklejajac w konsoli np.:

  1. jQuery('#countdown').countDown({
  2. targetDate: {
  3. 'day': 12,
  4. 'month': 1,
  5. 'year': 2014,
  6. 'hour': 12,
  7. 'min': 0,
  8. 'sec': 0
  9. }
  10. });
ornitolog
dałem
  1. 'month': month+1,

ale nic nie dało, nadal są zera i licznik nie idzie. Jak sprawdza się w konsoli, może sam do tego dojdę ale nie wiem jak wy to sprawdzacie
Damonsson
[JAVASCRIPT] pobierz, plaintext
  1. var day = czas.getDay();
  2. var month = czas.getMonth();
  3. var year = czas.getFullYear();
  4. var hour = czas.getHours();
[JAVASCRIPT] pobierz, plaintext


Ten czas jest kilka dni wstecz zawsze, źle to pobierasz.

Możesz to łatwo sprawdzić:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2.  
  3. var czas = new Date();
  4.  
  5. czas = new Date(czas.getTime() + 7200000);
  6.  
  7. var day = czas.getDay();
  8. var month = czas.getMonth();
  9. var year = czas.getFullYear();
  10. var hour = czas.getHours();
  11.  
  12. alert(year + ' - ' + month + ' - ' + day);
  13.  
  14. jQuery(document).ready(function() {
  15. jQuery('#countdown').countDown({
  16. targetDate: {
  17. 'day': day,
  18. 'month': month,
  19. 'year': year,
  20. 'hour': hour,
  21. 'min': 0,
  22. 'sec': 0
  23. }
  24. });
  25.  
  26. });
  27.  
[JAVASCRIPT] pobierz, plaintext


u mnie pokazuje 4.01.2014 czyli 5 dni temu.
ornitolog
rzeczywiscie, poprawilem powinno byc getUTCDate zamiast getDay (to pokazuje dzien tygodnia a nie miesiaca) ale powracajac do pytania, dla czego nie dodaje mi +1 do miesiaca i jak to sprawdzacie w konsoli, w konsoli bledow nic nie mam ale wy sprawdzacie to jakos inaczej. To pewnie podstawa ale musiala mi gdzies umknac ...
Damonsson
No i teraz coś tam odlicza.

w konsoli sobie wpisz:

console.log(year + ' - ' + month + ' - ' + day + ' - ' + hour);

i enter, pamiętaj że styczeń to "0"

Mi w konsoli pokazuje taki wynik:

2014 - 0 - 9 - 13

czyli 2014 styczeń, 9 dzień. 13:00 i poprawnie odlicza do tego czasu.


edit:
Nie masz nic dodawać, styczeń to 0 i działa dobrze. A dodawanie w JS odbywa się inaczej niż month+1 bo to = 01, a nie 1. Jak wykonywać operacje matematyczne na zmiennych w JS znajdziesz w google.
ornitolog
Dzięki za pomocc, wytlumacz mi prosze jeszcze jedno. Jak do month dodam 1 czy nie dodam to mam ten sam wynik w konsoli (date) ale jak dodam to skrypt dziala a jak nie to nic nie odlicza ... o co biega ?
Damonsson
Mój błąd, rzeczywiście styczeń w pluginie to 1, a Ty mu podajesz 0.

Wtedy zadziałało bo jak do 0 doda się na końcu 1, to wychodzi 01 czyli faktycznie to i tak jest 1, tak samo 05 to jest faktycznie 5. Ale dla 2 już by wyszło 21, a nie ma takiego miesiąca.

Zamień var month na:

[JAVASCRIPT] pobierz, plaintext
  1. var month = parseInt(czas.getMonth()) + 1;
[JAVASCRIPT] pobierz, plaintext


Czyli zamieniasz string na liczbę i możesz operować na liczbach, np dodawać (+). Jak nie zamienisz tego na int (liczbę), to w JS znak + interpretuje jako dodanie czegoś na końcu stringa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.