od Podstaw
9 godz. 20 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJavaScript to język programowania, który napędza niemal wszystkie strony internetowe. Dopełnia on technologie HTML i CSS, za pomocą których tworzymy strukturę i wygląd dokumentu. Co jednak w sytuacji, gdy chcemy po kliknięciu w wybrany przycisk wyświetlić powiększone zdjęcie lub wczytać dodatkowe dane z serwera? To właśnie w takich sytuacjach przydaje się język JavaScript i tzw. DOM API, dostępne w przeglądarce. Jak się przekonasz, możliwości nowoczesnych przeglądarek w połączeniu z tym językiem są naprawdę ogromne.
Język JavaScript może być używany nie tylko na stronach internetowych. Z tego powodu, w kursie omówimy najpierw najważniejsze konstrukcje tego języka, które są niezależne od platformy uruchomieniowej. Dzięki temu zbudujesz fundamenty niezbędne do tego, by wykorzystać ten język np. w środowisku Node.js. Krok po kroku omówimy sposoby tworzenia zmiennych, dostępne typy danych i operatory. Następnie zobaczysz jak tworzyć tablice i obiekty, z jakich instrukcji warunkowych i pętli możesz korzystać, a także jak tworzyć własne funkcje. Przekazywana wiedza uwzględniać będzie nowości, które pojawiły się w języku wraz z rewolucyjnym standardem EcmaScript 6 (ES6).
Sam język JavaScript to nie wszystko, by tchnąć ducha w strony internetowe. Z tego powodu, przeglądarki internetowe udostępniają tzw. DOM API. To interfejs, który z użyciem języka JavaScript pozwala na manipulację treścią i wyglądem strony. W kursie bardzo dokładnie omówimy czym jest Obiektowy Model Dokumentu, a także jak z nim pracować. Zobaczysz jak tworzyć nowe elementy HTML i wstawiać je na stronę, jak modyfikować ich treść, atrybuty, style czy klasy CSS. Poznasz sposoby na odczytywanie położenia elementu na stronie i jego wymiarów, które będą niezbędne w wielu sytuacjach. Dowiesz się także, jak przypisywać obsługę zdarzeń w przeglądarce, by np. wywołać własną funkcję, gdy ktoś kliknie w wybrany przez Ciebie przycisk.
JSON to popularny format wymiany danych, a Ajax to potoczna nazwa dla asynchronicznych zapytań HTTP, które wysyłać możemy z poziomu kodu JavaScript. Dziś niemal każda strona internetowa wykorzystuje te technologie. W niektórych przypadkach jako dopełnienie podstawowej funkcjonalności witryny, a w innych jako główny motor napędzający stronę. Jeśli kiedykolwiek widziałeś, jak na stronie internetowej jakaś treść "doczytuje" się np. podczas przewijania - widziałeś w praktyce Ajax. W jednym z rozdziałów kursu zobaczysz, jak pracować z tym formatem, a także jak wysyłać wspomniane zapytania do serwera.
Choć kurs który masz przed sobą, jest kursem dla początkujących, to aby zrozumieć jak działa język JavaScript i jak z nim się współcześnie pracuje, omówimy dwa ważne tematy - zarządzanie zależnościami i bundlowanie kodu. Dowiesz się czym jest npm i jak z jego pomocą pobierać paczki gotowego kodu z internetu, a także jak sprawić, by bez trudnu dołączać je do własnego kodu. W tym celu skorzystamy z narzędzia snowpack, które pozwoli nam także na optymalizację kodu przed jego wypuszczeniem w świat. Na tym etapie omówimy również jak działają moduły ESM, pozwalające dzielić kod na mniejsze części.
Kurs podzielony został na możliwie krótkie lekcje, do których w każdej chwili możesz wrócić. Jeśli zatem zapomnisz jak odczytywać wymiary elementu na stronie, szybko odnajdziesz odpowiednią lekcję. Czym jednak była by sama teoria i proste przykłady, bez pokazania, jak połączyć je w całość i wykorzystać w praktyce? Dobra wiadomość jest taka, że w kursie stworzymy aż 5 praktycznych projektów, wykorzystujących zdobytą wcześniej wiedzę. Najpierw napiszemy program losujący Dużego Lotka, następnie dynamiczny pasek postępu przeczytania artykułu, dymek pojawiający się nad elementem po najechaniu na niego myszą, wygenerujemy tabelkę w użytkownikami na podstawie danych JSON, a na koniec tworzymy prosty odtwarzacz wideo, z możliwością pauzowania i przewijania filmu.
Kurs ten jest dla wszystkich osób, które znają już podstawy HTML i CSS i chciałyby przejść poziom wyżej i dodać do swoich stron dynamiczności. Żadna wcześniejsza wiedza z zakresu JavaScript nie jest wymagana, ale zalecana jest podstawowa wiedza z zakresu samego programowania (czym są zmienne, pętle, funkcje itd.). Materiał ten będzie również świetnym odświeżeniem i usystematyzowaniem wiedzy dla osób, które już z tym językiem miały do czynienia. Po przerobieniu tego kursu będziesz gotowy, by poznawać język JavaScript dalej i zacząć korzystać z nowoczesnych frameworków.
W tej lekcji pokażę Ci, w jaki sposób możemy pracować z atrybutami elementów
HTML i mówiąc atrybuty mam na myśli takie atrybuty jak np.
class,
chociaż do class będziemy mieli jeszcze osobne metody, czy jak np.
src. Generalnie będziemy do każdego elementu mogli dodać dowolny atrybut,
także odczytać ten atrybut albo go po prostu usunąć.
Więc mamy taką prostą stronę i będę chciał sobie pobrać ten element i ustawić mu
jakiś atrybut href, dlatego, że tutaj jest taki pusty hash
będę chciał Ci pokazać jak możemy taki atrybut zmienić.
A zatem ten element ma klasę link, więc żeby go znaleźć skorzystamy z
document.querySelector i podam po prostu klasę link.
Czyli pierwszy element z taką klasą zostanie wtedy zwrócony.
I teraz jeżeli chciałbym odczytać jego atrybut href to możemy to zrobić w ten
sposób. Chcę go odczytać i zapisać sobie w takiej stałej.
Odwołamy się do tego elementu, który jest pod stałą link i następnie do getAttribute.
Tak wygląda metoda, której przekazujemy string z nazwą atrybutu.
W ten sposób dokładnie to co tutaj mamy,
czyli ten hash zostanie zapisany w stałej href.
Możemy sobie w konsoli oczywiście zobaczyć co jest w takiej stałej
i jest dokładnie tak jak wspomniałem.
Jeżeli chcielibyśmy ustawić dynamicznie
ten atrybut to skorzystamy z metody setAttribute, która przyjmuje dwa parametry.
Pierwszy jest to nazwa atrybutu.
Chcemy ustawić href.
Jeżeli on już jest to zostanie zmieniony.
Jeżeli by go nie było zostałby dodany i ustawimy go np. na http:/google.pl
w ten sposób. A gdybyśmy np.
chcieli, żeby ten link otwierał się w
nowej karcie, to być może znasz taki atrybut, który możemy dodać
czyli jest to target równa się blank,
w ten sposób. Ten atrybut również możemy sobie dynamicznie dodać.
Ja już tego nie będę robił, ale spokojnie
możesz to zrobić poniżej jeszcze raz wywołując taką metodę.
Więcej atrybutów również można dodać.
Teraz po odświeżeniu jak sobie najadę na przejdź do strony głównej,
widzimy już u dołu, że pokazuje to google.pl,
natomiast tutaj popełniłem błąd.
Nie podałem poprawnego adresu.
Teraz byłoby już ok.
Czy jak kliknę przekieruje nas po prostu do
googlr.pl. A więc w ten sposób dowolny atrybut można ustawić
tak samo jak mógłbyś to zrobić wpisując go tutaj już wcześniej w HTML.
Jeżeli chodzi o usuwanie atrybutów, usuńmy z tego elementu np.
atrybut np.
klasę link.
Chociaż usuwanie klas i dodawanie to jest osobny temat, o którym jeszcze powiemy.
Robi się to trochę inaczej, ale chcę Ci pokazać, że możemy spokojnie również w ten
sposób usuwać atrybuty dowolne, więc link i może się domyślasz
removeAttribute to jest ta metoda.
Podajemy nazwę atrybutu, który chcemy
całkowicie usunąć, no i on teraz oczywiście zniknie. Na naszej stronie
nie sprawi to, że będzie to wyglądać
jakkolwiek inaczej, bo nie miałem żadnych styli dla klasy
link, ale jak widzisz tego atrybutu już teraz nie ma.
Na stronie mamy jeszcze przycisk, do którego możemy również dodać sobie jakiś
atrybut, więc znajdę ten przycisk za pomocą document.querySelector button,
tym razem podam po prostu jego nazwę.
To też poprawny selektor
i będę chciał mu ustawić atrybut disabled i tym razem ustawimy go na wartość true.
To jest atrybut disabled i to działa w ten
sposób, że w HTML gdybyśmy chcieli ten przycisk wyłączyć już wcześniej, to
dalibyśmy taki atrybut, czyli atrybut bez żadnej wartości.
To jest tzw. boolowski atrybut, więc jeżeli taki chcemy
dodać, to podamy go po prostu na wartość true.
Tutaj nam coś podświetla, ale to też nie jest błędem.
To nie ma tutaj znaczenia.
I zauważ, że ten przycisk jest teraz wyłączony, nie da się w niego kliknąć i
często jak tworzymy jakieś aplikacje internetowe to robimy tak, że powiedzmy po
kliknięciu w jakiś przycisk wysyłamy zapytanie, żeby wysłać powiedzmy formularz
na serwer i nie chcemy żeby ktoś w tym czasie mógł kliknąć drugi raz
więc w kodzie dobrze wtedy zablokować taki
przycisk. I można to zrobić właśnie w ten sposób.
Oczywiście, aby to odwrócić zrobilibyśmy removeAttribute disabled.
Na koniec pokażę Ci jeszcze, że możemy
oczywiście dodawać atrybuty również do nowo tworzonych elementów. Więc gdybym sobie
utworzył element img za pomocą document.createElement
img to możemy mu ustawić atrybut za pomocą img.setAttribute lub są też ciekawe skróty za
pomocą właściwości można po prostu powiedzieć img.src
w ten sposób. W przypadku elementu A
moglibyśmy powiedzieć wtedy tak jak wyżej link.href,
więc są też takie skróty dla prawie wszystkich atrybutów,
ale czy wolisz korzystać z setAttribute czy z tych skrótów
to już zależy od Ciebie.
Ja mam taką preferencję, która mi się na przestrzeni lat wypracowała, że jak na
przykład ustawiam atrybut src dla img, to robię to w ten sposób,
a w zasadzie prawie każdy inny atrybut ustawiam za pomocą setAttribute.
Więc jest tutaj pewnego rodzaju niekonsekwencja, ale tak mi jest po prostu
wygodniej i realizuje to dokładnie to samo zadanie. Więc będę chciał sobie tutaj
ustawić taki oto link i teraz oczywiście będę chciał ten element dodać do strony.
Więc odwołam się do document.body, to jest taki skrót
możemy też zrobić querySelector body i
następnie do append, żeby wstawić tutaj jakiś element powiemy po prostu img.
Zobaczmy co się stanie na stronie.
Oczywiście taki emoji jak widzisz został tutaj wstawiony.
Ostatnią rzeczą, którą chciałbym Ci
pokazać jest to, jak można odczytać sobie wszystkie atrybuty
gdybyś z jakiegoś powodu tego potrzebował.
Możemy powiedzieć attributs albo attrs
i np. z tego elementu img odwołamy się do właściwości arrtibutes.
I jest coś takiego dostępne
i teraz jeżeli byśmy sobie w konsoli
podejrzeli co jest pod attrs to będzie to pewnego rodzaju obiekt, który
zawiera jak widzisz pod kluczem 0 atrybut src i ma też właściwość length 1.
Czyli ta właściwość powie nam ile element ma atrybutów, a pod poszczególnymi
indeksami, podobnie jak w przypadku tablic będziemy mieli te konkretne atrybuty.
To zatem tyle.
Tak naprawdę w większości przypadków będziesz korzystał z tych metod, które
pokazałem, czyli getAttribute, setAttribute i removeAttribute.
Możesz również czasami korzystać z takich
skrótów, które są dostępne za pomocą właściwości.
A jeśli chcesz odczytać wszystkie atrybuty
robimy to w taki sposób.