Dodaj interaktywność do swojego projektu – JavaScript

Interaktywność stron, wywoływanie zdarzeń po kliknięciu przycisku myszy, walidacja formularzy - to wszystko elementy tworzące na stronie internetowej interakcje z użytkownikiem. Są one obsługiwane głównie dzięki zastosowaniu języków programowania, między innymi języka JavaScript (innym popularnym narzędziem stosowanym w tym celu jest jQuery).

Zaczniemy od tego, w jaki sposób załączamy kod JavaScript obsługujący zdarzenia. Następnie wyjaśnimy, jak poruszamy się i znajdujemy kolejne elementy, którym nadajemy interaktywność. Na koniec wykorzystamy wszystkie zdobyte informacje i zaprogramujemy zdarzenie.

Implementacja kodu JavaScript w pliku HTML

Implementacji kodu JavaScript w pliku HTML możemy dokonać na dwa sposoby:

  • umieszczając kod w kodzie HTML;

  • tworząc osobny plik.

Umieszczenie w kodzie HTML

W ramach pierwszej metody w dolnej części <body> umieszczamy <script> oraz wstawiamy między znacznikami dowolny kod, który przygotowaliśmy.

Linia 1. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 2. prawy ukośnik prawy ukośnik w tym miejscu wpisujemy kod. Linia 3. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Przygotowanie w osobnym pliku

W przypadku drugiej metody tworzymy w projekcie plik script.js i dodajemy w dokumencie HTML, na końcu <body>, tuż przed zamknięciem tagu, źródło pliku JavaScript.

Linia 1. otwórz nawias ostrokątny script src znak równości cudzysłów kropka prawy ukośnik js prawy ukośnik script kropka js cudzysłów type znak równości cudzysłów text prawy ukośnik javascript cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Cały kod zawarty w pliku script.js jest opakowany w zdarzenie DOMContentLoaded, które powoduje, że kod znajdujący się w jego wnętrzu jest wywoływany dopiero w momencie, gdy załaduje się cały HTML. Nie czeka on na zakończenie ładowania arkuszy stylów czy obrazów.

Kiedy mechanika JavaScript jest gotowa do działania, w konsoli deweloperskiej zostaje wyświetlony komunikat “documents is ready".

Wyszukiwanie elementów

Wyszukiwanie elementów na stronie jest kolejnym krokiem do dodania na niej interaktywności. Po ich odnalezieniu możemy dodawać kolejne zdarzenia, które mogą być wywołane, np. po kliknięciu zdjęcia czy przycisku.

Podstawowe metody wyszukiwania elementów oparte na języku JavaScript to:

Linia 1. document kropka querySelector otwórz nawias okrągły cudzysłów selector cudzysłów zamknij nawias okrągły średnik. Linia 2. prawy ukośnik prawy ukośnik wyszukuje pierwszy element odpowiadający zapytaniu. Linia 3. document kropka getElementById otwórz nawias okrągły cudzysłów id cudzysłów zamknij nawias okrągły średnik. Linia 4. prawy ukośnik prawy ukośnik wyszukuje element z określonym id. Linia 5. document kropka querySelectorAll otwórz nawias okrągły cudzysłów selector cudzysłów zamknij nawias okrągły średnik. Linia 6. prawy ukośnik prawy ukośnik wyszukuje wszystkie elementy odpowiadające zapytaniu. Linia 7. document kropka getElementsByTagName otwórz nawias okrągły cudzysłów tag cudzysłów zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik wyszukuje elementy po tagu. Linia 9. document kropka getElementsByClassName otwórz nawias okrągły cudzysłów className cudzysłów zamknij nawias okrągły średnik. Linia 10. prawy ukośnik prawy ukośnik wyszukuje elementy po nazwie klasy.

Przykładowo, jeżeli chcemy zaleźć wszystkie paragrafy zawarte w znacznikach div w strukturze naszej strony, w pierwszej kolejności musimy zdefiniować zmienną, w której wywołujemy odpowiednią metodę.

Linia 1. var paragraf znak równości document kropka querySelectorAll otwórz nawias okrągły cudzysłów div p cudzysłów zamknij nawias okrągły średnik.

Aby sprawdzić poprawność działania naszego kodu, dodajemy console.log, który wyświetli nam w konsoli deweloperskiej informacje.

Linia 1. var paragraf znak równości document kropka querySelectorAll otwórz nawias okrągły cudzysłów div p cudzysłów zamknij nawias okrągły średnik. Linia 2. console kropka log otwórz nawias okrągły paragraf zamknij nawias okrągły średnik.
Polecenie 1

Korzystając z przykładowego projeku strony WWWD13hPQoabprzykładowego projeku strony WWW, sprawdź możliwość wyszukiwania elementów. Otwórz plik script.js i na podstawie przedstawionych powyżej metod wykonaj następujące czynności:

  1. Znajdź pierwszy element h2 na stronie.

  2. Znajdź element o klasie welcome.

  3. Znajdź element o id chartdiv.

  4. Znajdź wszystkie elementy li, znajdujące się w tagu ul.

Pamiętaj, aby zdefiniować zmienne i zastosować console.log, który w konsoli deweloperskiej pozwoli sprawdzić poprawność kodu.

Skoro HTML zbudowany jest na kształt rodziny, w której elementy mają rodziców, a często także rodzeństwo i dzieci, możemy również – poprzez relacje między nimi – wyszukiwać poszczególne elementy.

Znajdźmy pierwszy element o klasie "card‑description", a następnie wypiszmy w konsoli jego rodzica.

Linia 1. var card znak równości document kropka querySelector otwórz nawias okrągły cudzysłów kropka card minus description cudzysłów zamknij nawias okrągły średnik. Linia 2. console kropka log otwórz nawias okrągły card kropka parentElement zamknij nawias okrągły średnik.
Polecenie 2

Analogicznie wyszukaj element o klasie "card", a następnie – korzystając ze słowa "children" – wypisz w konsoli wszystkie jego dzieci.

Tablice w JavaScript

Zgodnie z rozwiązaniem uzyskanym w Poleceniu 2 możemy zauważyć, że otrzymaliśmy zbiór różnych wartości. Jest to tablica, a jej konstrukcja wygląda następująco:

Tablica z czterema elementami:

Linia 1. var array znak równości otwórz nawias kwadratowy 1 przecinek 2 przecinek 3 przecinek cudzysłów czwarty element cudzysłów zamknij nawias kwadratowy średnik.

Pusta tablica:

Linia 1. var arrayEmpty znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy średnik.

Tablice indeksujemy od zera, zatem pierwszy element tablicy ma indeks 0.

Linia 1. console kropka log otwórz nawias okrągły array otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik. Linia 2. prawy ukośnik prawy ukośnik wyświetli wartość 1.

Aby sprawdzić wielkość tablicy, możemy skorzystać z atrybutu length.

Linia 1. console kropka log otwórz nawias okrągły array kropka length zamknij nawias okrągły średnik. Linia 2. prawy ukośnik prawy ukośnik wyświetli 4.
Polecenie 3

W pliku js stwórz tablicę z pięcioma różnymi owocami, a następnie wypisz w konsoli deweloperskiej, ile znajduje się tam elementów, oraz podaj nazwy trzeciej i szóstej wartości.

Wywoływanie zdarzeń

Eventy to zdarzenia wywoływane na stronie WWWstrona internetowastronie WWW. Możemy je wywoływać w zależności od rodzaju interakcji, np. poprzez kliknięcie, najechanie kursorem na element, przy edycji formularza, za pomocą klawiatury czy myszy. Aby dodać zdarzenie na stronie, w pierwszej kolejności wybieramy element, na jakim ma się ono zrealizować. U nas jest to przycisk o id = submitBtn

Linia 1. var button znak równości document kropka querySelector otwórz nawias okrągły cudzysłów kratka submitBtn cudzysłów zamknij nawias okrągły średnik.

Na przycisku dodajemy metodę addEventListener(). Podstawowe parametry, jakie wskazujemy w tej funkcji, określają, w jakiej sytuacji wydarzenie ma się wykonać (u nas przykładowo będzie to "click") i co dokładnie ma się stać po jego wywołaniu.

Linia 1. var button znak równości document kropka querySelector otwórz nawias okrągły cudzysłów kratka submitBtn cudzysłów zamknij nawias okrągły średnik. Linia 3. button kropka addEventListener otwórz nawias okrągły cudzysłów click cudzysłów przecinek function otwórz nawias okrągły event zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. prawy ukośnik prawy ukośnik po kliknięciu w konsoli deweloperskiej pojawi się tekst cudzysłów button test cudzysłów. Linia 5. console kropka log otwórz nawias okrągły cudzysłów button test cudzysłów zamknij nawias okrągły średnik. Linia 6. zamknij nawias klamrowy zamknij nawias okrągły średnik.

Podsumowując: zdefiniowaliśmy zdarzenie, które jest wywoływane na przycisku o id = submitBtn. Po jego kliknięciu, w konsoli dewelopera wyświetli się tekst: "button test".

Zobaczmy jeszcze kolejny przykład działania kodu w języku JavaScript.

Zdarzenie dotyczy wyświetlenia przepisu po kliknięciu przycisku Zobacz mój ostatni przepis. W pierwszej kolejności musimy znaleźć zatem ten element i przypisać go do zmiennej. Od razu sprawdźmy, czy kod, który zapisaliśmy, jest poprawny, przez użycie console.log.

Linia 1. var recipe znak równości document kropka getElementsByClassName otwórz nawias okrągły cudzysłów show minus recipe cudzysłów zamknij nawias okrągły średnik. Linia 2. console kropka log otwórz nawias okrągły recipe zamknij nawias okrągły średnik.

Po wywołaniu zmiennej w konsoli deweloperskiej widzimy, że to tablica.

Musimy zatem pamiętać, aby przy wywoływaniu zdarzenia wskazać, że jest to pierwszy element - robimy to poprzez dodanie [0].

Linia 1. var recipe znak równości document kropka getElementsByClassName otwórz nawias okrągły cudzysłów show minus recipe cudzysłów zamknij nawias okrągły średnik. Linia 3. recipe otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka addEventListener otwórz nawias okrągły cudzysłów click cudzysłów przecinek function otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. prawy ukośnik prawy ukośnik ciało funkcji. Linia 5. zamknij nawias klamrowy zamknij nawias okrągły średnik.

Po kliknięciu przycisku „Zobacz mój ostatni przepis” chcemy, aby pojawił się przepis. Następnym krokiem jest w takim razie odnalezienie elementu o klasie .favorite‑recipe (który ma się wyświetlać lub chować po kliknięciu przycisku) oraz skorzystanie z konstrukcji warunkowej if. Konstrukcję tę znamy doskonale z innych języków programowania, więc nie będziemy jej omawiać w tym miejscu.

Linia 1. var recipe znak równości document kropka getElementsByClassName otwórz nawias okrągły cudzysłów show minus recipe cudzysłów zamknij nawias okrągły średnik. Linia 3. recipe otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka addEventListener otwórz nawias okrągły cudzysłów click cudzysłów przecinek function otwórz nawias okrągły e zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. var parentEl znak równości this kropka parentElement kropka parentElement średnik. Linia 5. var favoriteRecipe znak równości parentEl kropka getElementsByClassName otwórz nawias okrągły cudzysłów favorite minus recipe cudzysłów zamknij nawias okrągły średnik. Linia 7. if otwórz nawias okrągły favoriteRecipe otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka style kropka display znak równości znak równości znak równości cudzysłów flex cudzysłów zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. favoriteRecipe otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka style kropka display znak równości cudzysłów none cudzysłów średnik. Linia 9. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 10. favoriteRecipe otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka style kropka display znak równości cudzysłów flex cudzysłów średnik. Linia 11. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy zamknij nawias okrągły średnik.
Ciekawostka

Wyszukiwanie elementów w dokumencie HTML może również być związane z relacjami względem innych elementów, np. rodzic, dziecko, rodzeństwo. W przypadku omówionego wyżej zdarzenia odnaleźliśmy element odnosząc się do relacji dziecko‑rodzic, wykorzystując sformułowanie parentElement.

Polecenie 4

Na podstawie przeanalizowanego kodu spróbuj wykorzystać informację dotyczącą wywoływania zdarzeń na stronie internetowej i dodaj kod tak, aby po kliknięciu przycisku Zobacz mój ostatni przepis, podświetlał się on na czerwono. Kiedy przepis zostanie schowany, należy przywrócić pierwotny kolor.

Polecenie 5

Znajdź w repozytorium element o klasie color_photo, a następnie utwórz zdarzenie, które – po podwójnym kliknięciu zdjęcia – będzie w konsoli wypisywało dblclick.

Słownik

dokument HTML
dokument HTML

dokument (strona WWW) czytany przez przeglądarki internetowe, widoczny pod konkretnym adresem URL; zawiera tekst, odnośniki (linki), informacje o multimediach i zdjęciach

link
link

inaczej odnośnik; aktywny fragment tekstu albo obrazek; pozwala przejść na inny adres URL albo wykonać inną czynność, np. przesłać zapytanie przez formularz kontaktowy

strona internetowa
strona internetowa

zbiór dokumentów HTML połączonych ze sobą linkami URL (odnośnikami); dokumenty te znajdują się w obrębie jednej domeny internetowej (serwisu albo witryny)

tablica
tablica

rodzaj danych, który pozwala w jednej zmiennej przechowywać wiele wartości; może zawierać różne typy danych, m.in. liczby, stringi, obiekty, funkcje