od Podstaw
10 godz. 55 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJeśli poznałeś już wymienione wyżej technologie, to zapewne zdajesz sobie sprawę z ich ograniczeń. Za pomocą języka HTML tworzymy bowiem strukturę dokumentu, dodajemy treść tekstową, obrazy czy wideo. Aby jednak strona internetowa wyglądała perfekcyjnie, korzystamy z arkuszy stylów CSS, które pozwalają nam opisać wygląd wszystkich elementów HTML, ustawić wielkość tekstu czy dodać tło strony. No właśnie, ale gdzie tutaj interakcyjność?Zapewne już wiesz, że język CSS oferuje tzw. pseudoklasy, które pozwalają nam np. przypisać zmianę koloru elementu po najechaniu na niego kursorem myszy. I to tak naprawdę wszystko, na co możemy zareagować. A co gdybyśmy chcieli po wciśnięciu jakiegoś przycisku wysunąć ukryty panel, sprawdzić poprawność wypełnianego właśnie formularza lub pobrać dane z serwera i wyświetlić je na stronie bez przeładowywania witryny? Dobra wiadomość jest taka, że to wszystko jest możliwe z użyciem języka JavaScript, który “rozumie” każda przeglądarka internetowa.Choć język JavaScript powstał jako język skryptowy na potrzeby stron internetowych, to już dawno temu “wyszedł” z przeglądarek internetowych i może być używany tak naprawdę gdziekolwiek. W kursie, który masz przed sobą, poznasz język JavaScript jako niezależny język programowania, a dopiero później dowiesz się, jak wykorzystywać go do wzbogacania stron internetowych. Dzięki postawieniu grubej linii pomiędzy samym językiem, a Obiektowym Modelem Dokumentu dostępnym w przeglądarkach internetowych, będziesz nie tylko bardzo dobrze rozumiał sam język, ale w przyszłości wykorzystasz go do innych zastosowań.Na początku omówimy ciekawą historię języka JavaScript, a chwilę później rozpoczniemy poznawanie najważniejszych jego konstrukcji. I tak dowiesz się czym są zmienne, jakie typy danych dostępne są w tym języku, czym są liczne operatory, instrukcje warunkowe, pętle, tablice, obiekty i funkcje. Wszystkie te zagadnienia są bardzo podobne w innych językach programowania, dlatego kurs ten jest również świetnym wstępem do programowania w ogóle. Każda z przedstawianych konstrukcji języka jest bardzo dokładnie tłumaczona z myślą osobach początkujących. Nie zmienia to jednak faktu, że nawet osoby znające już podstawy języka JavaScript znajdą tutaj coś dla siebie, gdyż na każdym etapie przedstawiane są również liczne ciekawostki odnośnie danej konstrukcji.Kiedy zrozumiesz już jak działa język JavaScript, przejdziemy do drugiej połowy kursu, gdzie dokładnie omówimy Obiektowy Model Dokumentu, dostępny w przeglądarkach internetowych. Zobaczysz jak przeglądarka tworzy z kodu HTML drzewo dokumentu, jak reprezentowane są poszczególne jego węzły, a także jak język JavaScript potrafi z tym “wewnętrznym światem” współpracować. Dowiesz się jak wyszukiwać na stronie interesujących nas elementów HTML, a także jak tworzyć nowe elementy, przypisywać im treść i wstawiać je na stronę. Popracujemy również z atrybutami elementów, ich klasami i wreszcie ze stylami CSS, abyśmy mogli wpływać dynamicznie na wygląd naszej strony.Zobaczysz również, jak możemy w dowolnym momencie odczytać współrzędne położenia elementu na stronie, a także jego wysokość czy szerokość. Tę wiedzę wykorzystamy później w praktycznym przykładzie.Jeden z rozdziałów kursu poświęcony został zdarzeniom, a więc możliwości reagowania na zachowania użytkownika. Dzięki temu zobaczysz, jak możemy przypisać np. zdarzenie kliknięcia do wybranego elementu, a kiedy zostanie on kliknięty, wykona się przygotowany przez nas kod. Poznasz kilka różnych sposobów na przypisywanie oraz usuwanie zdarzeń, a także dowiesz się czym jest tzw. “bubbling” oraz “capturing” czy jak zablokować domyślną akcję przeglądarki.Przy pisaniu jakiegokolwiek kodu, zawsze pojawiają się błędy, dlatego i tutaj Twoje wątpliwości nie pozostaną bez odpowiedzi. Poznasz wszystkie typu błędów, które mogą się pojawić podczas wykonywania naszego kodu, a także wiele sposobów ich wykrycia i wyeliminowania.W kursie nie brakuje oczywiście praktycznych przykładów, które celowo zostały ułożone tak, aby wykorzystać w nich jak najwięcej zdobytej wcześniej wiedzy. Nie zostaniesz więc sam z poczuciem, że co prawda rozumiesz jak działa dana konstrukcja, ale nie masz pomysłu, kiedy z niej skorzystać. Na początek wykonamy praktyczny projekt losowania liczb z wybranego przedziału tak, aby nie mogły się powtórzyć. Już przy tym projekcie poznasz wiele ciekawych technik i sztuczek.Następnie przejdziemy do nieco bardziej zaawansowanego przykładu i napiszemy skrypt, który pozwoli nam sortować dane w tabeli po wybranych kolumnach, kiedy któraś z nich zostanie kliknięta. Zobaczysz jak sortować dane zarówno malejąco jak i rosnąco, a także jak zmieniać kolejność elementów HTML na stronie.W kolejnym projekcie zajmiemy się walidacją danych wpisywanych do formularza, by ten nie mógł zostać wysłany do serwera tak długo, jak zawiera jakiekolwiek błędy. Zobaczysz tutaj zdarzenia związane z polami formularza, a także sposoby na pobieranie z nich wartości i sprawdzanie czy są one poprawne. Zadbamy także o wrażenia użytkownika i wyświetlimy na stronie stosowne błędy, a także podświetlimy źle uzupełnione pola na czerwono.W przedostatnim projekcie wstawimy na stronę przycisk, który będzie się pojawiał po przewinięciu strony w dół, a znikał po odwrotnej akcji. Co jednak ciekawe, po jego kliknięciu, strona zostanie automatycznie, płynnie przewinięta do samej góry.W ostatnim projekcie stworzymy bardzo efektowny dymek z podpowiedzią, który będzie się pojawiał nad elementem po najechaniu na niego kursorem myszy. Wykorzystamy tutaj mnóstwo ciekawych technik. Dowiesz się również jak swój kod przygotować w taki sposób, abyś mógł go udostępnić innym osobom, by w łatwy sposób skorzystały z przygotowanego Tooltipa na swoich stronach.Kurs kończy się sekcją Tips & Tricks, w której znajdziesz 10 krótkich lekcji. W każdej z nich została omówiona jedna sztuczka. Każda z nich pozwoli Ci jeszcze lepiej zrozumieć język JavaScript, ale przede wszystkim zaoszczędzić czas i kilka linijek często niepotrzebnego kodu.Podsumowując, kurs ten jest nie tylko wprowadzeniem do samego języka JavaScript, ale także do Obiektowego Modelu Dokumentu. Dzięki wyraźnemu rozdzieleniu tych dwóch zagadnień, będziesz mógł w przyszłości wykorzystać język JavaScript także do innych zastosowań, poza przeglądarką internetową.
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 czy programowania nie jest wymagana, gdyż wszystkie konstrukcje są starannie tłumaczone. 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, z kursem JavaScript w Praktyce, który powstał jako dopełnienie tego kursu i porusza nieco bardziej zaawansowane tematy, na które tutaj zabrakło już czasu.
W tej lekcji poruszymy bardzo ciekawą kwestię jaką jest tworzenie elementów HTML.
Być może pamiętasz jak mówiłem ci, że kiedy przeglądarka wczytuje kod taki jak tutaj, który otrzymuje
z serwera albo w tym przypadku jest on otwarty z pliku to ona tworzy sobie elementy widzi tutaj znacznik h1
i utworzy taki właśnie obiekt h1.
Natomiast wspominałem ci, że jeżeli tutaj są podłączone jakieś skrypty, tak jak to widzimy w tym miejscu,
to te skrypty mogą tworzyć nowe elementy, wstawiać je na stronę i one tutaj nie będą widoczne.
Niemniej jednak możemy to robić i często jest to bardzo przydatne, więc teraz pokażę ci jak w JavaScript'cie
z użyciem API obiektowego modelu dokumentu możemy tworzyć nowe elementy, przejdziemy do scripts
i utworzę sobie zmienną div
Oczywiście nazwy zmiennych nie mają nic wspólnego z tym jakie elementy tworzymy.
Dowolnie możesz ją nazwać i odwołamy się do document.
Pamiętasz, że w sekcji poprzedniej tutaj mieliśmy np. querySelector, a tutaj mamy teraz taką metodę jak
createElement, czyli Utwórz element i podajemy tutaj string, nazwę tego elementu czyli div. Dokładnie
tak jak tworzymy te elementy w HTML, w ten sposób no to tutaj podajemy tylko nazwę takiego elementu.
I ta metoda obiektu document zwróci nam tutaj nowy element div.
I teraz, co ciekawe ten element nigdzie się na stronie nie pojawił, ale został utworzony i referencja
do niego została tutaj zwrócona, więc możemy się odwołać do div.
Jest to pusty element div. Będziemy mogli dodawać do niego tekst, czy inne elementy i wstawić go na stronę,
ale o tym powiem w kolejnej lekcji.
Teraz pokażę ci jak np. utworzyć obraz możemy nazwać element img i możemy odwołać się do
document.createElement, img
nie ma problemu, ale mamy również taki archaiczny konstruktor i będziesz widział, że w różnych skryptach,
różnie ludzie z tego korzystają.
Stąd chciałbym Ci to pokazać, new image, w ten sposób, czyli konstruktor pokazywałem ci że w języku JavaScript
np. string czy array możemy tak tworzyć.
A w obiektowym modelu dokumentu mamy dodatkowo np. taki konstruktor jak image. Zostanie nam tutaj zwrócony
taki element
img, jeśli się tutaj do niego odwołam,
tak to wygląda.
I dokładnie byłoby to to samo, gdybyśmy tutaj napisali img, natomiast z div'em nie możemy tak zrobić wpisując
new div z obrazkiem można, a z div'em nie.
I na koniec chce ci jeszcze pokazać, że możemy tworzyć nie tylko elementy takie jak tutaj, bo to są elementy,
a tak naprawdę chciałem pokazać jak tworzyć węzły w prezentacji o obiektowym model dokumentu,
mówiłem, że są to węzły i węzeł może być to element, tak jak tutaj div, czyli img, ale również może
to być węzeł tekstowy taki jak komentarz w HTML, gdybyśmy tutaj wstawili komentarz, to po sparsowaniu to
również jest jakiś obiekt i możemy również takie komentarze tworzyć,
co nie jest zbyt przydatne.
Ale tekst, który tutaj się znajduje, czyli ta całość również jest pewien obiekt.
Dlatego chcę Ci pokazać, że również możemy węzeł tekstowy utworzyć nazwę go tekst i odwołam się do document.
Tym razem nie create.Element ale
createTextNode, w ten sposób. Tutaj podaje jego wartość, czyli po prostu treść.
W ten sposób otworzyłem sobie nowy węzeł.
Możemy go wyświetlić tutaj i mamy treść.
I taki węzeł również będziemy mogli wstawić np. do div'a i to wszystko wstawić na stronę.
Niezbyt często musimy korzystać z takiego zapisu, ale chciałem abyś wiedział, że skoro przy parsowaniu
h1, jest to węzeł jako element, a tekstury się w środku znajduje, jest to osobny węzeł tekstowy.
To, że takie węzły tekstowe można tworzyć i teraz co jest bardzo ciekawe.
Na każdym z tych obiektów, możemy wywoływać różne metody i właściwości, o których jeszcze będziemy mówić.
Więc co jest ciekawe, to fakt, że ten element div, nie znajduje się nigdzie na stronie, ale możemy po kropce
odwołać się do różnych jego właściwości.
Podobnie z tekstem. No i na koniec, abyś sobie uzmysłowił, że w lekcji poprzedniej pokazywałem ci jak pobrać element
div, poprzez querySelector i ten element gdzieś na stronie się znajdował.
Gdybyśmy teraz pobrali np. h1 i zapisali ją w zmiennej to możemy do jej metod czy właściwości
się odwoływać.
Jeżeli w taki sposób otworzymy nowy element, to dokładnie do takich samych metod i właściwości jak w
przypadku pobrania go ze strony możemy się odwoływać.
Różnica jest jedynie taka, że on na razie nie jest nigdzie widoczny na stronie, więc jeżeli pobierzemy
takie h1 zapiszemy do zmiennej, a tu utworzymy nowe h1.
W taki sposób to one są podobne. Możemy tak samo z nich korzystać, tylko jedno znajduje się na stronie
a drugie nie.
Tworzenie elementów HTML · 1 min
var div = document.createElement("div");
var img = new Image();
var text = document.createTextNode("treść");