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 omówimy tekstowe typy danych dostępne w języku JavaScript, które z angielskiego nazywa się
string.
Od razu przejdźmy do kodu.
Tutaj w kodzie nic się nie zmienia.
Przechodzimy do pliku scripts.js i będziemy chcieli utworzyć kilka zmiennych.
Ja w lekcji poprzedniej tworząc zmienne, pokazałem ci już tak naprawdę ten typ danych.
Dlatego teraz tylko krótko wyjaśnić ci na czym on polega.
Będę teraz już, tak jak wspominałem, utwarzał zmienne w języku angielskim, a więc var i następnie nasza
dowolna nazwa. Ja to nazwę firstName, czyli pierwsze imię i przepiszemy tutaj
Jan, tak jak wcześniej.
No i właśnie na czym polega tekstowy typ danych w języku JavaScript?
Otóż na tym, że tekst, dowolny tekst tak naprawdę, tutaj również mogą być cyfry, oplatamy sobie
cudzysłowami lub apostrofami, o czym za moment powiem.
I taki typ danych nazywa się string'iem.
Jeżeli teraz przejdziemy tutaj, odświeżę, przejdziemy do Zbadaj element I tutaj do konsoli i wpiszemy
firstName, ale przed tym operator typeof, który na koniec poprzedniej lekcji Ci pokazałem, to właśnie typ
został nam zwrócony.
Mamy tutaj nazwę typu, ale jest ona zawarta również w cudzysłowach, a więc sama jakby wartość, która zostaje
zawsze zwrócona poprzez operator typeof,
jest to wartość tekstowa, czyli string.
Teraz przejdźmy do z powrotem i utworzę
drugą zmienną i nazwiemy ją lastName, czyli nazwisko równa się i tym razem użyję apostrofów, takich właśnie
pojedynczych
i tutaj napiszemy Kowalski.
No i teraz zapytał byś czym się różnią
cudzysłowy od apostrofów, w języku JavaScript.
Otóż zupełnie niczym się nie różnią.
Możesz korzystać z tego zapisu albo z tego zapisu. Natomiast nie możemy z tych zapisów korzystać naprzemiennie.
To znaczy nie możemy tutaj otworzyć cudzysłowu, a próbować zamknąć to apostrofem.
Tak nam to nie zadziała.
Więc albo taki zapis albo taki zapis.
Teraz kolejna rzecz - gdybyśmy chcieli sobie stworzyć zmienną, która przechowuje tytuł książki. Nazwiemy
ją bookTitle i gdybyśmy chcieli tutaj napisać np. Władca pierścieni, zakańczamy średnikiem, nie ma problemu.
Ale co gdybyśmy chcieli w tejże wartości mieć również cudzysłowy?
Bo jeżeli teraz sobie to wypiszemy tutaj,
to jak widzisz, cała wartość została nam zwrócona,
ale ta wartość tak naprawdę nie zawiera tych cudzysłowów.
One są tutaj tylko po to, aby pokazać nam, że jest to string.
I właśnie gdybyśmy chcieli, aby wewnątrz było cudzysłowy, to niestety nie możemy tego zapisać w taki
sposób, bo będzie to błąd.
Musimy tutaj użyć apostrofów.
Oczywiście tutaj zakończyć to cudzysłowem i wtedy będzie ok.
Natomiast nasz tekst będzie zawierał te apostrofy, a gdybyśmy koniecznie chcieli, aby były to cudzysłowy,
to możemy zrobić na odwrót.
A więc cudzysłowy umieścić na wewnątrz i wówczas nasz tekst, będzie zawierał już ten znak oraz ten znak
i teraz jest jeszcze jeden sposób.
Gdybyśmy chcieli to zapisać w cudzysłowach
i koniecznie wewnątrz mieć cudzysłowy, to możemy je tak zapisać jak wcześniej to pokazałem, ale przed
nimi musimy skorzystać z takiego oto backslash'a. Jest to znak tak zwanej ucieczki, czyli Escape i na końcu
możemy również podać drugi cudzysłów i uciec od tego w tenże sposób.
Jeżeli tak to sobie zapiszemy, to mamy to w cudzysłowach
i te cudzysłowy wewnątrz będą tutaj zawarte, bez tych znaków.
Gdybyśmy teraz odświeżyli i raz jeszcze wyświetlili bookTitle, to jak widzisz, to jest na czerwono tutaj podświetlona
wartość naszego ciągu znaków.
No i teraz ostatnia sprawa, kiedy pokazałem ci już te znaki ucieczki, to pokażę ci że mamy kilka specjalnych
znaków, które korzystają właśnie z tego znaku ucieczki.
Stworzymy zmienną, którą nazwę multiline, czyli taki tekst na wiele linijek i tutaj wpiszemy sobie linijka pierwsza
i postawię właśnie taki znak ucieczki, jak wcześniej,
w ten sposób i teraz napiszę n
i nie jest to zwykła literka n, zaraz się o tym przekonasz. Tutaj napiszemy linijka druga.
I jak widzisz, dziwnie to trochę wygląda w tym miejscu, bo mamy tutaj właśnie taki oto znak. Nie postawiłem
tutaj spacji, chociaż moglibyśmy to zrobić, ale nie jest to literka n
i jest to znak nowego wiersza. Natomiast od razu chcę Ci pokazać jeszcze znak tabulatora.
Dlatego w tym miejscu znowu postawimy znak nowego wiersza i następnie postawimy
sobie tab.
W ogóle, o co chodzi, nie możemy w JavaScript'cie pisać w wielu wierszach, tak jak to teraz zrobiłem,
tekstu, czyli tekst może być zapisany tylko w jednej linijce, ale możemy korzystać z takich znaków nowego
wiersza czy ze znaku tabulatora czyli ucieczka.
i t,
I tutaj napiszemy trzecia linijka
i to wszystko zakończę.
I teraz jeżeli przejdziemy do przeglądarki, odświeżę, wpiszemy multiline, to jak widzisz, wygląda to
normalnie.
Natomiast te znaki, które tam wstawiłem, nie są tutaj widoczne, ale jeżeli taki tekst sobie skopiujemy i
kliknę sobie na ten element, Inspect Element, jak widzisz jest to h1, w tym narzędziu możemy tutaj kliknąć
dwukrotnie i ten tekst edytować na żywo.
Jeśli wkleję tekst, który skopiowałem, zauważ od razu jak on wygląda. W miejscu, gdzie postawiłem ucieczka n,
mamy zaczętą nową linijkę.
Tutaj znowu było n i t, czyli tab.
Jeśli sobie teraz to zapiszę czyli wcisę Enter.
Tutaj tekst wygląda normalnie, ale jak widzisz jest on tak oto sformatowany, jakby w kodzie.
Gdybym teraz do tej h1 normalnie w stylach CSS chciał przypisać white-space.
Być może kiedyś z takiej właściwości CSS skorzystałeś, to możemy napisać tutaj pre
i wszystko zostanie wyświetlone w taki sposób, w jaki zostało to zapisane,
łącznie z tymi znakami nowego wiersza czy tabulacji.
Więc tutaj mamy tabulację. Tutaj nowy wiersz i nowy wiersz, a w kodzie, przypominam, wygląda to w taki
oto sposób.
Takich specjalnych znaków jest jeszcze więcej i za każdym razem musimy te znaki
przez taki właśnie backslash escape'ować.
Nie mam tutaj niestety lepszego słowa na tę czynność, dlatego tak będę to określał.
Tekstowy typ danych · 1 min
var firstName = "Jan";
var lastName = 'Kowalski';
var bookTitle = "\"Władca pierścieni\"";
var multiline = "Linijka pierwsza\nlinijka druga\n\ttrzecia linijka";