JavaScript na stronach WWW
JavaScript tam, gdzie żyje najczęściej: na stronie. Znajdowanie i zmiana elementów (DOM), zdarzenia, formularze i ich sprawdzanie, wygląd, tworzenie elementów, timery i daty, a na końcu lekcje praktyczne i projekt w stylu arkusza egzaminu INF.03. Każde zadanie sprawdza się samo: program klika i wpisuje jak użytkownik, a potem patrzy, co pokazała strona. Kontynuacja kursu "JavaScript od podstaw: konsola".
Dla kogo: Liceum i technikum: JavaScript na stronach (DOM, zdarzenia, formularze), zadania sprawdzane jak przez użytkownika, pod INF.03. Więcej o kursie
DOM: znajdowanie i zmiana elementów
Przeglądarka zamienia HTML w drzewo obiektów: DOM (Document Object Model). Każdy znacznik to obiekt, który skrypt może znaleźć (`getElementById`, `querySelector`, `querySelectorAll`) i zmienić: tekst, kod HTML, atrybuty. Zobaczysz kilka sposobów wybierania tych samych elementów, różnicę między `textContent` a `innerHTML`, atrybuty `data-`, pętle po wielu elementach i poruszanie się po drzewie: rodzic, dzieci, rodzeństwo.
- Pierwszy skrypt zmienia stronę
- Cztery sposoby wybierania elementów
- textContent czy innerHTML
- Atrybuty, właściwości i data-
- Numerowanie elementów: pętla for
- Numerowanie elementów: forEach
- Rodzic, dzieci i rodzeństwo
- Zmień nagłówek i podpis
- Wizytówka z obiektu
- Uwagi z przedrostkiem
- Link i obrazek z atrybutów
- Wynik pogrubiony przez innerHTML
- Lista zbudowana z tablicy
- Suma cen z tabeli
- Najdłuższe słowo akapitu
- Najdroższy produkt z data-
- Liczniki pozycji w nagłówkach
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Zdarzenia: kliknięcia, klawisze i mysz
Strona reaguje na użytkownika przez zdarzenia: kliknięcie, wpisanie znaku, naciśnięcie klawisza, najechanie myszą. Zobaczysz trzy sposoby podpięcia obsługi kliknięcia (atrybut, właściwość, `addEventListener`) i dlaczego ten ostatni jest najlepszy, obiekt zdarzenia (`e.target`, `e.key`), zdarzenia klawiatury i myszy, pole reagujące na każdy znak oraz delegowanie: jeden nasłuchiwacz dla wielu elementów dzięki bąbelkowaniu zdarzeń.
- Kliknięcie: atrybut onclick
- Kliknięcie: właściwość onclick
- Kliknięcie: addEventListener
- Obiekt zdarzenia i e.target
- Klawiatura i mysz
- Pole reaguje na każdy znak
- Delegowanie: jeden nasłuchiwacz dla listy
- Licznik kliknięć
- Przełącznik pokaż i ukryj
- Jedna funkcja dla wielu przycisków
- Podgląd wpisywanego tekstu
- Sterowanie strzałkami
- Podpowiedź po najechaniu
- Zadania odhaczane kliknięciem
- Podwójne kliknięcie edytuje
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Formularze: odczyt pól i obliczenia
Formularz to wejście danych do programu na stronie. Zobaczysz, jak odczytać pole tekstowe, liczbowe, listę wyboru, pole wyboru i przyciski opcji, dlaczego wartość pola to zawsze tekst (`'2' + '3'` daje `'23'`), jak obsłużyć wysłanie formularza (`submit` i `preventDefault`) i jak zbudować kalkulatory w stylu zadań egzaminu INF.03: przycisk czyta pola, liczy i wypisuje wynik na stronie.
- Kalkulator krok 1: pułapka tekstu
- Kalkulator krok 2: zamiana na liczby
- Lista wyboru, pole wyboru i przyciski opcji
- Wysłanie formularza: submit i preventDefault
- Obliczenia jak w arkuszu INF.03
- Kalkulator czterech działań
- Cena biletu ze zniżką
- Przelicznik walut z listy
- Ankieta z przyciskami opcji
- Licznik słów w polu tekstowym
- Lista zakupów z formularza
- Koszt wycieczki z kilku pól
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Walidacja formularzy: HTML i JavaScript
Dane z formularza trzeba sprawdzić, zanim program ich użyje. Zobaczysz walidację wbudowaną w HTML (`required`, `minlength`, `type="email"`, `min`, `max`, `pattern`), odczyt jej wyników w skrypcie (`checkValidity`, obiekt `validity`), własne komunikaty zamiast dymków przeglądarki, regułę zależną od dwóch pól (`setCustomValidity`) i refaktoryzację: od ciągu `if` do reguł w tablicy. Komunikaty przeglądarki różnią się między przeglądarkami i językami, dlatego zadania pokazują własne.
- Walidacja wbudowana w HTML
- checkValidity i obiekt validity
- Walidacja krok 1: ciąg if-ów
- Walidacja krok 2: reguły w tablicy
- setCustomValidity: reguła z dwóch pól
- Brakujące pola wymienione z nazwy
- Kod pocztowy we wzorcu
- Ocena z zakresu
- Powtórzony adres e-mail
- Pseudonim: wszystkie błędy z tablicy reguł
- Przycisk aktywny dla poprawnego formularza
- Zamówienie z oznaczeniem błędnych pól
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Wygląd strony: style i klasy
Skrypt może zmieniać wygląd strony na dwa sposoby: ustawiając pojedyncze style (`element.style.color`) albo przełączając klasy CSS (`classList`). Zobaczysz oba i refaktoryzację z pierwszego w drugi (wygląd zostaje w CSS, skrypt mówi tylko, w jakim stanie jest element), odczyt stylu z arkusza (`getComputedStyle`), zmienne CSS ustawiane suwakiem, pasek postępu i zakładki.
- Style wprost: element.style
- Tryb ciemny krok 1: wszystko w stylach
- Tryb ciemny krok 2: klasa zamiast stylów
- classList i getComputedStyle
- Zmienne CSS i suwak
- Zakładki: jedna widoczna sekcja
- Pasek postępu
- Tryb ciemny klasą na body
- Wybrany wiersz tabeli
- Oceny w kolorach
- Powiększanie czcionki
- Zakładki planu lekcji
- Ramka pola na żywo
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Tworzenie, wstawianie i usuwanie elementów
Strona nie musi mieć wszystkich elementów w HTML: skrypt może je tworzyć (`createElement`), wstawiać w wybrane miejsce (`append`, `prepend`, `before`, `after`), przenosić i usuwać (`remove`). Zobaczysz refaktoryzację od `innerHTML +=` (proste, ale niszczy wpisane dane i nasłuchiwacze) do `createElement` i własnej funkcji pomocniczej, szablon `<template>` z `cloneNode` oraz tabelę budowaną z tablicy obiektów i sortowaną kliknięciem w nagłówek.
- Lista gości krok 1: innerHTML +=
- Lista gości krok 2: createElement i append
- Lista gości krok 3: funkcja el tworząca elementy
- Wstawianie w różne miejsca
- Szablon template i cloneNode
- Tabela z tablicy obiektów i sortowanie
- Na początek i na koniec listy
- Usuwanie przyciskiem w wierszu
- Przenoszenie między listami
- Tabela z danych z sumą
- Karty z szablonu
- Sortowanie po kliknięciu nagłówka
- Przesuwanie w górę i w dół
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Timery i daty
Strona może działać sama, bez klikania: `setTimeout` wykonuje kod raz po czasie, `setInterval` co określony czas, a `clearTimeout` i `clearInterval` je zatrzymują. Zobaczysz zegar na żywo, stoper poprawiany krok po kroku (licznik tyknięć gubi czas, `Date.now()` nie), obiekt `Date` (miesiące od zera, dzień tygodnia, dodawanie dni, różnica dat) i pułapkę stref czasowych przy polu `type="date"`. W zadaniach timery są krótkie, żeby sprawdzanie trwało chwilę.
- setTimeout: raz, po czasie
- setInterval: zegar na żywo
- Stoper krok 1: liczenie tyknięć
- Stoper krok 2: czas z Date.now()
- Obiekt Date: części daty i rachunki
- Pole date i pułapka stref czasowych
- Komunikat z opóźnieniem
- Wysyłanie z możliwością cofnięcia
- Odliczanie do startu
- Dzień tygodnia z pola daty
- Ile dni do wakacji
- Data za kilka dni
- Wiek w pełnych latach
- Godzina i powitanie z obiektu Date
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Praktyka: tabliczka mnożenia i kalendarz na stronie
Lekcja praktyczna: dwa znane z konsoli programy przeniesione na stronę. Tabliczka mnożenia powstaje najpierw jako HTML w napisie, potem z elementów DOM z rozmiarem z pola, a na końcu podświetla wiersz i kolumnę pod kursorem. Kalendarz rozdziela model (tygodnie miesiąca jako tablica) od widoku (tabela), ma przełączanie miesięcy i notatki przy dniach. W zadaniach: tabliczka z nagłówkami, quiz, kalendarz z wyboru miesiąca, weekendy, dzisiejszy dzień i nawigacja.
- Tabliczka krok 1: HTML w napisie
- Tabliczka krok 2: elementy DOM i rozmiar z pola
- Tabliczka krok 3: podświetlanie wiersza i kolumny
- Kalendarz: model tygodni i widok tabeli
- Kalendarz z notatkami
- Tabliczka o rozmiarze z pola
- Tabliczka z nagłówkami
- Kliknięty iloczyn
- Quiz z tabliczki
- Kalendarz z wyboru miesiąca
- Weekendy i dzisiejszy dzień
- Nawigacja po miesiącach
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Projekt w stylu arkusza INF.03
Zadania jak w części praktycznej egzaminu INF.03: formularz, obliczenie i wynik na stronie. Przykłady pokazują jedną aplikację w trzech krokach: najpierw wszystko w jednym nasłuchiwaczu, potem osobne funkcje do czytania, liczenia i wyświetlania, na końcu walidacja z komunikatem. Do tego galeria z miniaturami i ankieta z paskami. W zadaniach: kalkulator paliwa, rezerwacja, galeria, konwerter, licznik kalorii, ankieta i zamówienie pizzy.
- Kalkulator paliwa krok 1: wszystko w jednym miejscu
- Kalkulator paliwa krok 2: czytanie, liczenie, wyświetlanie
- Kalkulator paliwa krok 3: walidacja i komunikat
- Galeria z miniaturami
- Ankieta z paskami procentów
- Kalkulator kosztów podróży
- Rezerwacja stolika
- Galeria: miniatury i przyciski
- Konwerter długości
- Licznik kalorii
- Ankieta z wynikami
- Zamówienie pizzy
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3
Kółko i krzyżyk krok po kroku
Gra w kółko i krzyżyk budowana małymi krokami; w każdym przykładzie zaznaczone są linie, które się zmieniły. Plansza z przycisków, potem z pętli, ruchy na zmianę, zajęte pola, stan gry w tablicy zamiast w przyciskach, wygrana (osiem linii), remis, podświetlenie zwycięskiej linii, nowa gra i wynik meczu. Na koniec model w klasie Game oddzielony od widoku i przeciwnik komputerowy: najpierw prostymi regułami, potem algorytmem minimax, z którym nie da się wygrać.
- Kółko i krzyżyk krok 1: plansza z dziewięciu przycisków
- Kółko i krzyżyk krok 2: plansza z pętli
- Kółko i krzyżyk krok 3: kliknięcie stawia X
- Kółko i krzyżyk krok 4: ruchy na zmianę
- Kółko i krzyżyk krok 5: zajęte pole
- Kółko i krzyżyk krok 6: stan gry w tablicy
- Kółko i krzyżyk krok 7: wygrana w jednej z ośmiu linii
- Kółko i krzyżyk krok 8: remis i koniec gry
- Kółko i krzyżyk krok 9: zwycięska linia na zielono
- Kółko i krzyżyk krok 10: nowa gra i wynik meczu
- Kółko i krzyżyk krok 11: model w klasie Game
- Kółko i krzyżyk krok 12: komputer gra według reguł
- Kółko i krzyżyk krok 13: komputer nie do pokonania (minimax)
- Plansza kółka i krzyżyka z pętli
- Krzyżyk i kółko na zmianę
- Kto wygrał partię
- Remis na pełnej planszy
- Zwycięska linia wyróżniona
- Nowa gra i wynik meczu
- Komputer według reguł
- Brudnopis 1
- Brudnopis 2
- Brudnopis 3