MODUŁ 05
DOM: wyszukiwanie elementów i zmiana treści
PPrezentacja dla nauczyciela
W tym module poznasz Document Object Model (DOM) — most łączący kod JavaScript ze znacznikami strony HTML. Opanujesz precyzyjne odnajdywanie elementów, bezpieczną zmianę ich zawartości tekstowej i kodu HTML oraz odczytywanie wartości z formularzy.
Wyszukiwanie elementów: getElementById oraz querySelector
Document Object Model (DOM) to reprezentacja dokumentu HTML w postaci drzewa obiektów. Każdy znacznik na stronie (np. akapit, przycisk, obrazek) jest węzłem, do którego JavaScript może uzyskać dostęp, odczytać jego stan lub zmienić wygląd.
Dwie podstawowe metody wyszukiwania elementów to:
document.getElementById('nazwa_id')— wyszukuje element na podstawie wartości atrybutuid.Jest to metoda najszybsza i najczęściej stosowana w zadaniach interfejsowych. Zwraca pojedynczy obiekt elementu lubnull,jeśli element o podanym identyfikatorze nie istnieje. Pamiętaj: atrybut id w poprawnym dokumencie HTML musi być unikalny!document.querySelector('selektor_css')— wyszukuje pierwszy element w dokumencie pasujący do podanego selektora CSS (np.'.karta'dla klasy,'#pole'dla id lub'input[type="number"]'dla atrybutu).document.querySelectorAll('selektor_css')— wyszukuje wszystkie pasujące elementy i zwraca je w postaci kolekcji (NodeList), po której można iterować np. pętląforEach().
Zwróconą referencję do elementu zawsze warto zapisać w stałej const, aby nie zmuszać przeglądarki do wielokrotnego przeszukiwania całego drzewa DOM przy każdej operacji.
W poniższym przykładzie odnajdujemy element o identyfikatorze glownaKarta i nadajemy mu klasę wyróżnienia. Zobacz działanie w edytorze kodu:
function wyroznijElementy() {
const karta = document.getElementById("glownaKarta");
karta.classList.toggle("wyrozniona");
}
Modyfikacja zawartości: textContent a innerHTML
Gdy odnajdziemy już element na stronie, najczęstszą operacją jest zmiana wyświetlanej w nim zawartości. Służą do tego dwie właściwości, które różnią się sposobem interpretacji wprowadzanych danych:
element.textContent— odczytuje lub zapisuje czysty tekst. Jeśli przypiszemy do tej właściwości tekst zawierający znaczniki HTML (np.<b>napis</b>), przeglądarka nie zinterpretuje ich jako elementów strony, lecz wyświetli je dosłownie jako zwykły tekst. Jest to właściwość bezpieczna, szybka i zalecana przy wypisywaniu wyników obliczeń, komunikatów czy imion użytkowników.element.innerHTML— odczytuje lub zapisuje kod HTML. Przeglądarka parsuje przypisany ciąg znaków i tworzy wewnątrz elementu nowe węzły DOM. Używamy jej wtedy, gdy celowo chcemy wstawić sformatowany fragment (np. listę pozycji, tabelę lub pogrubienie), a także gdy chcemy błyskawicznie wyczyścić całą zawartość kontenera za pomocą zapisukontener.innerHTML = "";.
Jeden przycisk wstawia ten sam ciąg znaków ze znacznikami pogrubienia przez textContent, a drugi przez innerHTML.
Porównaj w edytorze działanie obu właściwości i zobacz różnicę w interpretacji:
function wstawJakoText() {
const obszar = document.getElementById("obszarPodgladu");
obszar.textContent = "<strong>Ten tekst nie jest pogrubiony</strong>";
}
function wstawJakoHtml() {
const obszar = document.getElementById("obszarPodgladu");
obszar.innerHTML = "<strong style=\"color:#15803d\">Ten tekst jest pogrubiony jako HTML!</strong>";
}
Odczyt i zapis właściwości formularza: value
Elementy formularza, takie jak pola jednoliniowe (<input type="text">, <input type="number">), pola wieloliniowe (<textarea>) oraz listy wyboru (<select>), przechowują swoją aktualną zawartość we właściwości .value.
Kluczowe operacje na właściwości value:
- Odczyt:
const kod = pole.value.trim();— pobiera aktualnie wpisany przez użytkownika tekst (warto od razu wyczyścić spacje krańcowe za pomocątrim()). - Zapis / podmiana:
pole.value = "nowa wartość";— programowo zmienia tekst wyświetlany wewnątrz kontrolki formularza. - Czyszczenie:
pole.value = "";— resetuje zawartość pola tekstowego do pustego ciągu (np. po pomyślnym dodaniu komentarza lub wysłaniu wiadomości na czacie).
Warto pamiętać: dla pól tekstowych i liczbowych stosujemy właściwość value, natomiast dla pól wyboru (checkboxów i przycisków radiowych) sprawdzamy właściwość logiczną checked.
W poniższym przykładzie sprawdzamy wprowadzony kod rabatowy i wyświetlamy potwierdzenie, a drugi przycisk czyści pole tekstowe przez przypisanie pustego łańcucha znaków. Przetestuj działanie programu:
function zastosujKod() {
const pole = document.getElementById("poleKodu");
const kod = pole.value.trim().toLowerCase();
const komunikat = document.getElementById("komunikatKodu");
if (kod === "lato2026") {
komunikat.textContent = "Kod zaakceptowany: zniżka 15% została naliczona!";
komunikat.style.color = "#15803d";
} else {
komunikat.textContent = "Nieprawidłowy kod promocyjny.";
komunikat.style.color = "#b91c1c";
}
}
function wyczyscKod() {
document.getElementById("poleKodu").value = "";
document.getElementById("komunikatKodu").textContent = "Pole zostało wyczyszczone.";
}
Ćwiczenia
- 1Pobranie elementu przez getElementByIdOdnajdź akapit po identyfikatorze i zmień jego tekst za pomocą textContent.Zadanie i podpowiedzi →
- 2Aktualizacja nagłówka stronyZmień zawartość nagłówka h1 za pomocą getElementById.Zadanie i podpowiedzi →
- 3Wyszukiwanie selektorem querySelectorOdnajdź pierwszy element o klasie .alert za pomocą querySelector i zmień jego treść.Zadanie i podpowiedzi →
- 4Formatowanie treści za pomocą innerHTMLWstaw sformatowany fragment kodu HTML ze znacznikiem pogrubienia przez innerHTML.Zadanie i podpowiedzi →
- 5Bezpieczny tekst z textContentZabezpiecz stronę przed parsowaniem tagów, używając textContent zamiast innerHTML.Zadanie i podpowiedzi →
- 6Czyszczenie zawartości konteneraWyczyść całą zawartość elementu listy za pomocą przypisania pustego łańcucha do innerHTML.Zadanie i podpowiedzi →
- 7Odczyt wartości z pola tekstowego valueOdczytaj tekst z pola input i przepisz go do akapitu wynikowego.Zadanie i podpowiedzi →
- 8Zmiana wartości w polu formularzaProgramowo zmień tekst wpisany w polu input za pomocą właściwości value.Zadanie i podpowiedzi →
- 9Czyszczenie pola tekstowegoZresetuj wartość pola formularza, przypisując pusty łańcuch znaków do value.Zadanie i podpowiedzi →
- 10Pobranie i podwojenie liczby z pola wejściowegoOdczytaj liczbę z input type=number, skonwertuj na liczbę całkowitą i podwój wynik.Zadanie i podpowiedzi →
- 11Sumowanie wartości z dwóch pól wejściowychPobierz wartości z dwóch pól, zsumuj je po konwersji i wyświetl w akapicie.Zadanie i podpowiedzi →
- 12Personalizowane powitanie z czyszczeniem spacjiOdczytaj imię z formularza, oczyść za pomocą trim() i wstaw powitanie do DOM.Zadanie i podpowiedzi →
- 13Wybór pola selektorem atrybutuWyszukaj pole formularza za pomocą querySelector z selektorem atrybutu name.Zadanie i podpowiedzi →
- 14Dynamiczne generowanie listy w HTMLWstaw całą listę wypunktowaną ul z trzema pozycjami li za pomocą innerHTML.Zadanie i podpowiedzi →
- 15Przelicznik walut z formularzaOdczytaj kwotę w PLN, przelicz na EUR i wstaw zaokrąglony wynik do DOM.Zadanie i podpowiedzi →
- 16Kompletny raport kalkulacji w DOMPobierz dane produktu z formularza, wylicz cenę brutto i wygeneruj sformatowany raport.Zadanie i podpowiedzi →