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.
I to już ostatnia lekcja na temat funkcji, w której chciałbym Ci pokazać kilka wbudowanych w języku JavaScript
funkcji.
Do tej pory widziałeś, że korzystaliśmy np. z funkcji alert czy prompt. Natomiast nie są to funkcje
JavaScript'owe.
Są to funkcje dostępne w przeglądarce, w obiektowym modelu dokumentu, o którym będziemy jeszcze dużo w
tym kursie mówić.
Ale jeżeli chodzi o sam język JavaScript, to wszystkie funkcje jakie są dla nas dostępne możesz zobaczyć
na tej stronie.
Mozilla Developer Network. Są one tutaj kilka z nich teraz przetestujemy.
To nie oznacza, że w JavaScript'cie nie ma więcej funkcji, bo jest ich dużo więcej. Natomiast są to funkcje
ukryte jako metody różnych obiektów, czyli mamy różne obiekty i po ich metodach możemy do funkcji się
odwoływać, ale takie globalne funkcje, których możemy bez trudu używać.
Są to te funkcje, które możesz tutaj zobaczyć i teraz chciałbym Ci pokazać jak one działają.
Gdybyś chciał więcej o nich poczytać, możesz tutaj na linki po prostu kliknąć i my zaczniemy od funkcji
właśnie eval.
Jest to funkcja, z której nie powinniśmy korzystać.
Natomiast jeżeli musimy to
funkcja ta działa następująco.
Otóż może zróbmy to w tym miejscu od razu.
Funkcja działa tak, że przyjmuje tekst, który jest kodem, Jak to wygląda?
Wiesz, że mamy taką funkcję jak alert, której moglibyśmy tutaj przekazać np. Witaj iw przeglądarce zostanie
nam Witaj wyświetlone.
To co my napisaliśmy, jest to tekst. Wpisałem do klawiatury, jest to zwykły tekst i teraz mamy taką funkcję
jak eval, która przyjmuje tekst, który jest kodem.
Jeżeli tutaj wpisze teraz tekst, ale on musi być objęty właśnie w string, skoro tutaj użyłem takich oto
cudzysłowów, to muszę tutaj użyć
to, o czym już mówiłem w tym kursie, apostrofów. Natomiast, jak widzisz, tutaj, przekazaliśmy tekst, który normalnie
nie miałby znaczenia, gdybym go wpisał w tym miejscu,
w taki oto sposób, to ten kod mogę ci to zresztą pokazać się nie wykona, ale też nie mamy żadnego błędu.
Natomiast, jeżeli do eval podamy tekst, w ten sposób, to zostanie wszystko sparsowane i na stronie
użyte w ten oto sposób. Natomiast eval nie jest najlepsza funkcją, bo do niej różne rzeczy złe również mogą
być przekazane, bo kiedy korzystamy z eval. Zazwyczaj wtedy kiedy dalibyśmy jakiemuś użytkownikowi możliwość
pisania kodu na stronie internetowej w jakimś polu typu textarea. Wzięlibyśmy tę wartość i tutaj checielibyśmy
ją wywołać, więc nie jest to do końca najlepsze rozwiązanie, ale wiedz, że taka funkcja istnieje.
Zakończymy to oczywiście średnikiem i wykomentuje.
Przejdźmy dalej.
Kolejną z funkcji, które tam były widoczne była isFinite i może zróbmy to w console.log'u.
Jest to funkcja, która zwraca true lub false i sprawdza czy liczba jest liczbą skończoną, więc jeżeli wpisze
isFinite 2, zostanie nam zwrócone true,
ale jeżeli wpisze bardzo dużą liczbę, która będzie większa od wartości, które Ci pokazałem, czyli np. infinity.
Jest taka wartość w JavaScript'cie, to powinniśmy tutaj mieć false.
Mamy tutaj błąd, coś źle wpisałem, OK, w ten sposób i jak widzisz false, czyli infinity nie jest liczbą
skończoną.
Podobnie będzie z minus infinity i czasami może być tak, że będziemy jakieś obliczenia wykonywać i wyjdą
nam tak duże liczby, że one nie będą skończone, więc możemy je tutaj podstawić i sprawdzić czy taka liczba
jest liczbą skończoną.
Następna funkcja, jest to isNaN, bardzo ciekawa, console.log, sprawdzimy isNaN, czyli is not number.
Jeżeli tutaj sobie wpiszemy sobie wartość, która jest w JavaScript'cie, czyli NaN, zostanie zwrócone true, jak widzisz i teraz,
gdybyśmy chcieli sprawdzić czy wyniki jakichś naszych obliczeń są liczbą czy nie to możemy to sprawdzić,
na przykład 2, już wiemy,
powiedzmy razy undefined, gdyby jakiś parametr nie był podany itd.
W ten sposób, czy to jest Not a Number, powinno zostać zwrócone true, bo nie jest to number. Gdybyśmy chcieli to
odwrócić, to możemy w ten sposób sprawdzić.
Odwracając to wszystko, czy to co tutaj zostało podstawione, jest liczbą, czy nie, widzimy false, nie jest
liczbą. Czy jest to odwrotność, bo tutaj pytamy czy nie jest.
Ale zostawię to tutaj w komentarzu w taki sposób.
Kolejna bardzo ważna funkcja jest to parseFloat, również zrobimy to w console.log'u.
Jest to funkcja, która pozwala nam ze string'u, zrobić liczbę zmiennoprzecinkową. Gdybym tutaj podał np.
20.0, to zobaczysz, co zostanie nam zwrócone.
Wiesz, że gdybyśmy chcieli porównać z tym operatorem strict equality z number, to to będzie string i nigdy
nam się to nie porówna.
Ale po przejściu przez funkcję parseFloat i po odświeżeniu będzie to dla nas 20
i ten typ, to będzie normalny już number. Gdybym tutaj napisał typeof.
Mam nadzieję, że pamiętasz jak to zadziała. Najpierw to zostanie wykonane, co zostanie zwrócone tutaj, czyli w
naszym przypadku dwudziestka zostanie przepuszczana przez operator typeof i console.log powinien nam zwrócić
number
Zobaczmy. Dokładnie tak się stało, czyli parseFloat pozwala nam parsować liczby takie zmiennoprzecinkowe.
Gdybym tutaj napisał 20 i pół, to zobaczysz że 20 i pół zostało zwrócone.
Co ciekawe, jeżeli one zaczynają się od cyfr, tak jak tutaj, a dalej byśmy mieli np. jakieś inne znaki,
czyli złotówki.
Zadziała, zostanie to po prostu wycięte, jak możesz zobaczyć, teraz kolejną funkcją bardzo podobną, znowu
w console.log'u jest parseInt, czyli chcemy sparsować integer, a więc liczbę całkowitą.
Jeżeli np. z formularza na stronie internetowej będziemy pobierać to, co ktoś wpisze, to zawsze będzie
to w formacie string dla nas zwrócone. Jeżeli chcemy to zamienić na liczbę np. 20, aby string został
na typ number zamieniony,
to możemy użyć parseInt i również nam to bez trudu zadziała.
Gdybym tutaj dopisał, tak jak wcześniej 20 złotych, ponownie działa nam to bez problemu.
No i jeszcze inną funkcją o której mówiłem jest np. funkcja alert, która nam coś wyświetla.
Ale tak jak wspominałem, nie jest to funkcja w samym języku JavaScript, ale ta funkcja jest dla nas dostępna
poprzez obiektowy model dokumentu. W ten sposób ona działa i nie będzie dostępna np. Node.js,
który też jest platformą napisaną dla JavaScriptu.
A te inne funkcje będą, więc warto pamiętać, że wiele funkcji, będzie dla nas dostępnych w przeglądarce
ale nie w samym JavaScript ie i będę o tym jeszcze mówił.
Wbudowane funkcje JavaScript · 1 min
// eval('alert("Witaj");');
// console.log( isFinite(-Infinity) );
// console.log( !isNaN(2 * undefined) );
// console.log( parseFloat("20.5zł") );
// console.log( parseInt("20zł") );
// alert("Witaj!");