Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Odliczanie czasu do wydarzeń
Forum PHP.pl > Forum > Przedszkole
-afgan227-
Witajcie
Mam mały problem. Muszę zrobić stronę w Xhtml 1.0 z elementami javascript. Stronę napisałem. Teraz kombinuję ze skryptem. Wymyśliłem sobie , że napisze skrypt, który będzie odliczał czas do zawodów. Znalazłem w internecie kilka skryptów o podobnym działaniu. Spróbowałem coś napisać od siebie. Nie jestem pewny 2 rzeczy. Pierwsza to poprawności tego co namazałem, druga czy dobrze wstawiam to na stronę.

Tak jak widać w linku wydumałem sobię by pozostały czas był wpisywany w okienka.
Co do wstawiania skryptu w xhtml trzeba to zrobić na stronie pod koniec sekcji body ? za pomocą \
  1. <script type="text/javascript">
  2. // <![CDATA[
  3. /* Tutaj umieść kod skryptu. */
  4. // ]]>

i jeszcze taki zapis
  1. <script type="text/javascript" src="plik.js"></script>


Tak to wygląda

PS. Dopiero raczkuję , więc mam nadzieje , że będziecie wyrozumiali
Daimos
Ty to pisałeś? Bo wygląda jak zlepek czegoś, o czym nie masz pojęcia:
1. Nigdzie nie deklarujesz zmiennej pozostalyCzas, a na początku funkcji ją sprawdzasz,
2. w instrukcjach IF zawsze rób klamerki! Tutaj else wisi sobie gdzieś w powietrzu, do tego cała instrukcja jest źle zbudowana,
3. drift1 i teraz mają taką samą datę, którą później porównujesz,
4. napisałeś funkcję ileDoEventu i jej w ogóle nie uruchamiasz,
5. ustawiając interwał podajesz argumenty (ileDoEventu(2014, 1, 10, 0, 0, 0, 0)), a funkcję napisałeś tak, że nie przyjmuje żadnych.

Zacznij od podstaw, zobacz jak się debuguje javascript
afgan227
Miałeś rację z tym poduczeniem. Na szybko pisane i sporo błędów. Postanowiłem poczytać i zacząć budować od najprostszych rzeczy ten skrypt od nowa. I wzbogacać go o dodatkowe elementy. Po paru ładnych chwilach spędzonych z nim kod wygląda tak :

kod

aczkolwiek w takiej formie jak jest to wyrzuca non stop te odliczanie. Chciałbym aby wynik wrzucał np do okienka w tabeli. Jak to zrobić?
afgan227
O kurcze. Nie spodziewałem się aż takiej pomocy smile.gif Teraz widzę jak dużo mi brakowało. Nie jestem pewny czy dobrze rozumiem kod. Na początku tworzone są 2 tablice. Jedna z datami, a druga z czymś. W każdym razie ta druga przypisuje elementy z formy zegara.

Metoda sliced jakby dzieli dwie zmienne i tworzy z niej jedną inną tak? W tym wypadku "bierze" date wydarzenia i miejsce gdzie ma być wpisane ile zostało. Zgadza się?

Nie rozumiem tylko zapisu, a może raczej zasady działania.

Kod
function countDate(actualTime, eventDate, outputNodeNumber){
      
        if( actualTime > eventDate ){
      
              if( inputsCopyNode.length !== 0 ){
            
                  inputsCopyNode.splice(outputNodeNumber, 1);
          
                  eventsTime.splice(outputNodeNumber, 1);
          
                  sliced = true;
    
                  return 'Nieaktualne';
owca_82
- do funkcji przekazywana jest tablica z datami kolejnych wydarzeń wg. określonego formatu
- tworzona jest "kopia" kolekcji z kontrolkami formularza (kolekcja elements formularza jest tylko do odczytu). (*)
- definicja funkcji odpowiadającej za obliczenie czasu i zwrócenie odpowiedniego łańcucha
- definicja funkcji odpowiadającej za wypełnienie wszystkich "inputów" formularza
- wypełnienie danymi "inputów" po wejściu na stronę
- ustawieni interwału który będzie wypełniał te "inputy" co sekundę

Metoda splice przycina tablicę (usuwa z niej dane o określonym indeksie), w tym przypadku usuwa z tablicy zawierającej referencję do "inputów", ten z nich w którym wyświetli się tekst "nieaktualne" - przycina też w analogiczny sposób tablicę wejściową (tą z datami). Jeżeli wszystkie pola będą "nieaktualne" to kończy interwał.
Tak naprawdę część tej funkcji jest tylko po żeby skrypt(funkcja odpowiedzialna za wyświetlanie wyników) nie przechodził nie potrzebnie po wszystkich "inputach", a tylko przez te które są "aktualne" - taka forma "optymalizacji" heee wink.gif
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.