Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

W internecie dane witryn przesyłane są w formie tekstowej. Logika działania strony internetowej nie jest realizowana w postaci skompilowanegokompilacjaskompilowanego programu wykonywalnego, np. z rozszerzeniem .exe, lecz przyjmuje formę niekompilowanych skryptów tekstowych.

Tekst pozostaje niezależny od systemu operacyjnego czy środowiska uruchomieniowego, a ponadto nie zawiera kodów sterującychkody sterującekodów sterujących, czyli znaków mogących wpłynąć na logikę działania aplikacji.

To właśnie dlatego odpowiedź na wysłane do serwera żądanie HTTP odsyłana jest do klienta w postaci tekstowych plików HTML, CSS oraz skryptów JavaScript.

Ciekawostka

Inaczej oczywiście zachowują się skrypty uruchamiane po stronie serwera – pliki te na zawsze pozostaną utajnione dla użytkownika serwisu, gdyż zwyczajnie nigdy nie trafią do komputera klienta. Tego typu skrypty również są tekstem, lecz zdefiniowanym i używanym tylko na potrzeby realizacji zadań serwerowych, np. komunikacji z bazą danych.

Dopiero w komputerze użytkownika końcowego odebrany tekst zostaje zamieniony na widok witryny. Interpretacji dokonuje przeglądarka internetowa. Aplikacja ta oczywiście uruchomiona jest już w ramach konkretnego systemu operacyjnego (Windows, Linux, Unix, macOS).

Obiektowy model dokumentu

Przeglądarka internetowa na podstawie przysłanego do niej z serwera tekstu tworzy w pamięci RAM komputera klienta liczne obiekty. Powstają one według przepisu klas, posiadających atrybuty (właściwości, cechy) oraz metodymetodametody, czyli funkcje wewnątrz klas.

Ważne!

Metody w języku JavaScript to funkcje, które przetwarzają dany obiekt (są do niego przypisane jako własność). Zestaw metod jest definiowany dla konkretnych typów obiektów.

Stworzenie obiektu przechowującego datę:

  • const d = new Date();

Przykładowe metody wywołane na rzecz obiektu:

  • d.getDate(); – zwraca dzień miesiąca,

  • d.getHours(); – zwraca godzinę.

  • d.setFullYear(2022); – ustawia rok w dacie na wartość podaną jako argument w nawiasie.

W pamięci komputera stworzony zostaje wirtualny model struktury strony internetowej. Zawiera on wszystkie zdefiniowane w dokumencie HTML elementy (obiekty), ich style (wygląd i położenie) określone w CSS oraz zachowania (funkcje, metody) zapisane w JavaScript , przydatne do realizowania mechaniki zachowania interfejsu po stronie klienta.

Model ten (ang. Document Object Model) umożliwia wprawnemu programiście JavaScript modyfikację wielu aspektów wyglądu oraz zachowania istniejących w dokumencie obiektów składowych. Można więc śmiało powiedzieć, że wraz z językiem JavaScript obiektowy model DOM tworzy APIAPIAPI dedykowane wygodnej komunikacji programisty webowego z witryną.

Przeglądanie struktury modelu

Aby przyjrzeć się strukturze obiektowej modelu DOM, wystarczy uruchomić narzędzia deweloperskie – np. podczas przeglądania dowolnej strony w przeglądarce Google Chrome wystarczy nacisnąć klawisz F12 lub z menu kontekstowego myszy wybrać opcję Zbadaj.

W nowym oknie wybieramy zakładkę Console, po czym wpisujemy z klawiatury: window.document. (zwróćmy uwagę na dopisany na końcu operator kropki, który oddaje w JavaScript hierarchię elementów). Na liście podpowiedzi dostępnej po wpisaniu kropki (widocznej na zrzucie ekranu poniżej) warto rozejrzeć się wśród udostępnionych właściwości, kolekcji i metod, każdorazowo zatwierdzając swój wybór klawiszem Enter.

R1KDqp9TO4xx31
Zrzut ekranu przedstawia okno narzędzi deweloperskich.  W górnej części okna znajdują się zakładki: Memory, Elements, Sources, Network, Performance, Application, Security, Lighthouse, Console.  Z opcji tych, czerwonym prostokątem zaznaczono Console.  Po lewej stronie znajduje się lista z elementami: No user messages, No errors, No warnings, No info, 1 verbose.  Po prawej stronie znajduje się okno konsoli gdzie czerwonym prostokątem zaznaczono wpis: window.document. Obok znajduje się lista z zaznaczoną opcją: jQuery224085453624036169271.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Warto zajrzeć np. do następujących elementów w strukturze window.document.:

  • window.document.head – zwraca zawartość sekcji head dokumentu,

  • window.document.body – zwraca zawartość sekcji body dokumentu,

  • window.document.images – kolekcja wszystkich obrazów umieszczonych na podstronie,

  • window.document.links – kolekcja hiperłączy w dokumencie, w tym adresów określonych w atrybucie href oraz pól area,

  • window.document.forms – kolekcja zawierająca listę formularzy.

Szybko przekonujemy się, że struktura modelu przypomina drzewo. Jest ono bardzo rozbudowane, dlatego przedstawiamy jedynie kilka węzłów w postaci graficznej:

R1cRuFOqAG3PV1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Po tej wstępnej eksploracji modelu DOM nauczymy się modyfikacji elementów witryny z użyciem JavaScript. Każda taka zmiana zostanie poprzedzona uchwyceniem danego obiektu znajdującego się w dokumencie.

Uchwycenie elementów witryny

Uchwyt (ang. handle) pozwala nam uzyskać łatwy dostęp do obiektu zdefiniowanego w HTML, a więc dostępnego także w modelu obiektowym DOM. Dzięki istnieniu uchwytu zyskamy możliwość odczytu bądź modyfikacji licznych atrybutów obiektu.

W języku JavaScript istnieje kilka sposobów definiowania uchwytów. Warto je poznać i przećwiczyć ich stosowanie, gdyż w codziennej pracy z kodem na pewno będziemy ich używać.

Polecenie 1

Wszystkie przedstawione poniżej przykłady uchwycenia obiektów możesz przetestować we własnej przeglądarce internetowej – wystarczy pobrać archiwum:

RcuHkrZ5NUzYj

Przycisk do pobrania pliku ZIP z archiwum.

Plik ZIP o rozmiarze 1.38 KB w języku polskim

W pliku o nazwie uchwyty.html zdefiniowano łącznie sześć pojemników <div> o następujących wartościach atrybutów:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów czerwony cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Jeden otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów zielony cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Dwa otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny div id znak równości cudzysłów c cudzysłów class znak równości cudzysłów niebieski cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Trzy otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny div id znak równości cudzysłów d cudzysłów class znak równości cudzysłów czerwony cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny Cztery otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 5. otwórz nawias ostrokątny div id znak równości cudzysłów e cudzysłów class znak równości cudzysłów zielony cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny Pięć otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 6. otwórz nawias ostrokątny div id znak równości cudzysłów f cudzysłów class znak równości cudzysłów niebieski cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny Sześć otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny.

Metoda getElementById()

Metoda getElementById(), jak wskazuje jej nazwa, pozwala uchwycić obiekt, jeżeli w znaczniku HTML ustanowiono dodatkowo atrybut id, koniecznie o unikalnej wartości. Zapis w postaci:

Linia 1. document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły kropka innerHTML.

pozwala uchwycić tylko pierwszy z pojemników, gdyż jako jedyny posiada atrybut id o wartości a.

Dodatkowo odczytano także atrybut innerHTML uchwyconego pierwszego bloku, czyli w praktyce znajdujący się w nim wewnętrzny kod HTML.

Metoda getElementsByName()

Tym razem zyskujemy możliwość uchwycenia wszystkich obiektów w dokumencie, które mają taką samą wartość atrybutu name. A ponieważ atrybut ten nie musi być unikalny w dokumencie, zmienna k może stać się kolekcją wielu uchwytów:

Linia 1. var k znak równości document kropka getElementsByName otwórz nawias okrągły cudzysłów x cudzysłów zamknij nawias okrągły średnik.

W omawianym ćwiczeniu istnieją dokładnie trzy pojemniki o wartości "x" atrybutu name.

Dostęp do poszczególnych uchwyconych obiektów zgromadzonych w kolekcji uzyskamy podobnie jak do szuflad klasycznej tablicy, stąd:

  • pierwszy pojemnik to k[0],

  • drugi pojemnik to k[1],

  • trzeci pojemnik to k[2] - itd.

Jest to standardowe indeksowanie tablicowe, rozpoczynające się zawsze od wartości zero. Jak widać także w kodzie ćwiczenia, możemy dodatkowo odczytać liczbę uchwyconych elementów, a to za sprawą dodatkowego atrybutu length, który oznacza dosłownie długość kolekcji:

Linia 1. wypisz plus znak równości cudzysłów otwórz nawias ostrokątny li zamknij nawias ostrokątny Uchwycono cudzysłów plus k kropka length plus cudzysłów obiekty dwukropek cudzysłów średnik. Linia 2. wypisz plus znak równości k otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów przecinek cudzysłów plus k otwórz nawias kwadratowy 1 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów przecinek cudzysłów plus k otwórz nawias kwadratowy 2 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów otwórz nawias ostrokątny prawy ukośnik li zamknij nawias ostrokątny cudzysłów średnik.

Metoda querySelector()

Bardzo często elementy zdefiniowane w języku HTML zdarza nam się wybierać z całego dokumentu na potrzeby arkuszy stylów – są to tzw. selektory CSS. Stąd także w języku JavaScript powstała metoda używająca właśnie tych zapisów.

W przykładzie użyto operatora #, który oznacza w CSS wybranie z dokumentu obiektu o zadanej wartości id.

Linia 1. document kropka querySelector otwórz nawias okrągły cudzysłów kratka d cudzysłów zamknij nawias okrągły kropka innerHTML.

Ponieważ atrybut id musi być unikalny, nie mamy do czynienia z kolekcją, tylko z pojedynczym obiektem.

Ciekawostka

Zwróćmy uwagę, że w metodzie querySelector() możemy posługiwać się nie tylko znakiem # reprezentującym w selektorze CSS identyfikator elementu, lecz całym silnikiem selektorów CSS - możliwe jest zatem uchwycenie znaczników, klas, pseudoklas itd.

Metoda getElementsByTagName()

Tym razem zyskujemy możliwość uchwycenia wszystkich obiektów w dokumencie, które zdefiniowano za pomocą tego samego znacznika (tagu) HTML.

Częstym błędem jest mylenie tej metody z getElementsByName(), która wykorzystuje atrybut name. Warto zwracać na to szczególną uwagę – mowa tu o TagName, czyli nazwie tagu, nie zaś o atrybucie name.

Podobnie jak w poprzednim przykładzie, tutaj także mamy do czynienia z kolekcją elementów, przez co również dysponujemy dodatkowym atrybutem length całej kolekcji o nazwie zestaw:

Linia 1. var zestaw znak równości document kropka getElementsByTagName otwórz nawias okrągły cudzysłów div cudzysłów zamknij nawias okrągły średnik. Linia 2. wypisz plus znak równości cudzysłów otwórz nawias ostrokątny li zamknij nawias ostrokątny Uchwycono cudzysłów plus zestaw kropka length plus cudzysłów obiektów minus cudzysłów średnik. Linia 3. wypisz plus znak równości cudzysłów pierwszy z nich w kolekcji dwukropek cudzysłów plus zestaw otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów otwórz nawias ostrokątny prawy ukośnik li zamknij nawias ostrokątny cudzysłów średnik.

Metoda getElementsByClassName()

Obiekty możemy także uchwycić po wartości atrybutu class, który oczywiście nie musi być unikalny w dokumencie – mamy zatem ponownie do czynienia z kolekcją uchwytów oraz możemy używać zapisu tablicowego i nawiasów kwadratowych.

Dodatkowy atrybut length określający liczbę uchwyconych obiektów również jest dla kolekcji dostępny.

W naszym przykładzie oba pojemniki mają przypisaną klasę o nazwie zielony, a zatem oba obiekty zostają przekazane do kolekcji uchwytów:

Linia 1. var kolekcja znak równości document kropka getElementsByClassName otwórz nawias okrągły cudzysłów zielony cudzysłów zamknij nawias okrągły średnik. Linia 2. wypisz plus znak równości cudzysłów otwórz nawias ostrokątny li zamknij nawias ostrokątny Uchwycono cudzysłów plus kolekcja kropka length plus cudzysłów obiekty dwukropek cudzysłów średnik. Linia 3. wypisz plus znak równości kolekcja otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów przecinek cudzysłów plus kolekcja otwórz nawias kwadratowy 1 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów otwórz nawias ostrokątny prawy ukośnik li zamknij nawias ostrokątny cudzysłów średnik.
Ciekawostka

Zwróćmy uwagę, że metody mogące zwrócić wiele uchwytów do obiektów, czyli będące kolekcjami, mają w nazwie na końcu literę s – jest to zawsze: getElements, w przeciwieństwie do getElement. W języku angielskim obecność tej dodatkowej litery s sugeruje właśnie liczbę mnogą.

Metoda querySelectorAll()

Metoda ta, wzbogacona w porównaniu do querySelector() o słówko All (ang. wszystko), sprawdzi się w przypadku uchwycenia więcej niż jednego elementu z użyciem selektorów CSS. Służy zatem również do definiowania kolekcji.

Zgodnie z zasadą znaną ze wcześniejszych metod, także i tutaj dysponujemy dodatkowym atrybutem length utworzonej kolekcji:

Linia 1. var obiekty znak równości document kropka querySelectorAll otwórz nawias okrągły cudzysłów kropka niebieski cudzysłów zamknij nawias okrągły średnik. Linia 2. wypisz plus znak równości cudzysłów otwórz nawias ostrokątny li zamknij nawias ostrokątny Uchwycono cudzysłów plus obiekty kropka length plus cudzysłów obiekty dwukropek cudzysłów średnik. Linia 3. wypisz plus znak równości obiekty otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów przecinek cudzysłów plus obiekty otwórz nawias kwadratowy 1 zamknij nawias kwadratowy kropka innerHTML plus cudzysłów otwórz nawias ostrokątny prawy ukośnik li zamknij nawias ostrokątny cudzysłów średnik.

Skoro sposoby definiowania uchwytów mamy już sklasyfikowane, możemy przejść do ćwiczeń praktycznych w kolejnej sekcji tego e‑materiału.

Jak modyfikować style CSS?

Sklasyfikujmy metody wpływania przy użyciu języka JavaScript na style CSS uchwyconych obiektów.

Polecenie 2

Wszystkie przedstawione przykłady wpływania na style elementów hierarchii DOM możesz przetestować we własnej przeglądarce internetowej – wystarczy pobrać archiwum.

R2YkOGhytfZ6W

Przycisk do pobrania pliku ZIP zawierającego pliki HTML.

Plik ZIP o rozmiarze 2.67 KB w języku polskim

Metoda classList.add()

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c01.html:

Linia 1. otwórz nawias ostrokątny head zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny style zamknij nawias ostrokątny kropka czerwony otwórz nawias klamrowy color dwukropek red średnik zamknij nawias klamrowy otwórz nawias ostrokątny prawy ukośnik style zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny prawy ukośnik head zamknij nawias ostrokątny. Linia 5. otwórz nawias ostrokątny body zamknij nawias ostrokątny. Linia 7. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 8. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 10. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 11. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 12. obiekt kropka classList kropka add otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły średnik. Linia 13. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Za pomocą tej instrukcji jesteśmy w stanie dodać klasę o zadanej nazwie do listy wszystkich klas obowiązujących w uchwyconym obiekcie. W naszym przykładzie do pierwszego pojemnika dodano klasę zmieniającą kolor tekstu na czerwony.

Metoda classList.remove()

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c02.html:

Linia 1. otwórz nawias ostrokątny head zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny style zamknij nawias ostrokątny kropka czerwony otwórz nawias klamrowy color dwukropek red średnik zamknij nawias klamrowy otwórz nawias ostrokątny prawy ukośnik style zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny prawy ukośnik head zamknij nawias ostrokątny. Linia 5. otwórz nawias ostrokątny body zamknij nawias ostrokątny. Linia 7. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów czerwony cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 8. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 10. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 11. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 12. obiekt kropka classList kropka remove otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły średnik. Linia 13. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Tym razem możemy usunąć klasę z listy aktualnie obowiązujących w obiekcie. W przedstawionym przykładzie klasa o nazwie class="czerwony" obowiązywała w HTML, lecz skrypt usunął ją z obiektu, przez co tekst pozostał zapisany czarnym kolorem czcionki.

Metoda classList.contains()

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c03.html:

Linia 1. otwórz nawias ostrokątny head zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny style zamknij nawias ostrokątny kropka czerwony otwórz nawias klamrowy color dwukropek red średnik zamknij nawias klamrowy otwórz nawias ostrokątny prawy ukośnik style zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny prawy ukośnik head zamknij nawias ostrokątny. Linia 5. otwórz nawias ostrokątny body zamknij nawias ostrokątny. Linia 7. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów czerwony cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 8. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 10. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 11. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 12. prawy ukośnik prawy ukośnik Odkomentowanie linii poniżej sprawi przecinek że spełni się else dwukropek. Linia 13. prawy ukośnik prawy ukośnik obiekt kropka classList kropka remove otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły średnik. Linia 14. if otwórz nawias okrągły obiekt kropka classList kropka contains otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 15. alert otwórz nawias okrągły cudzysłów Posiada klasę dwukropek czerwony cudzysłów zamknij nawias okrągły średnik. Linia 16. else. Linia 17. alert otwórz nawias okrągły cudzysłów Nie posiada klasy dwukropek czerwony cudzysłów zamknij nawias okrągły średnik. Linia 18. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Angielskie słowo contains oznacza „zawiera” – stąd metoda ta służy programiście do uzyskania odpowiedzi na pytanie, czy obiekt posiada aktualnie przypisaną pewną klasę.

Metoda zwraca wartość true lub false, co pozwala na wygodne skorzystanie z niej w instrukcji warunkowej if. W omawianym przykładzie sprawdzamy, czy obiekt ma przypisaną klasę o nazwie czerwony.

Metoda classList.toggle()

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c04.html:

Linia 1. otwórz nawias ostrokątny head zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny style zamknij nawias ostrokątny kropka czerwony otwórz nawias klamrowy color dwukropek red średnik zamknij nawias klamrowy otwórz nawias ostrokątny prawy ukośnik style zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny prawy ukośnik head zamknij nawias ostrokątny. Linia 5. otwórz nawias ostrokątny body zamknij nawias ostrokątny. Linia 7. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 8. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 10. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 11. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 12. prawy ukośnik prawy ukośnik Dodaj klasę dwukropek kropka czerwony. Linia 13. obiekt kropka classList kropka toggle otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły średnik. Linia 14. prawy ukośnik prawy ukośnik Odkomentowanie linii poniżej usunie klasę dwukropek. Linia 15. prawy ukośnik prawy ukośnik obiekt kropka classList kropka toggle otwórz nawias okrągły cudzysłów czerwony cudzysłów zamknij nawias okrągły średnik. Linia 16. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Metoda ta działa jak przełącznik stanu przypisania klasy do obiektu. Jeżeli klasy nie ma na liście w elemencie, to zostanie dodana. W przeciwnym wypadku, jeśli klasa aktualnie obowiązuje, nastąpi usunięcie jej z obiektu.

Właściwość style

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c05.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów x cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów name znak równości cudzysłów y cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 5. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 6. obiekt kropka style kropka color znak równości cudzysłów red cudzysłów średnik. Linia 7. obiekt kropka style kropka fontWeight znak równości cudzysłów bold cudzysłów średnik. Linia 8. obiekt kropka style kropka marginBottom znak równości cudzysłów 30px cudzysłów średnik. Linia 9. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Dzięki właściwości style zyskujemy możliwość prostej modyfikacji konkretnych właściwości CSS z użyciem języka JavaScript. Oczywiście problemem może być operator -, który w CSS rozdziela właściwości główne od potomnych w kaskadzie, zaś w JavaScript jest operatorem odejmowania.

Kilka przykładów przedstawionych w tabeli pokazuje, w jaki sposób poradzono sobie z tym problemem:

Właściwości

JavaScript

background‑color

backgroundColor

font‑family

fontFamily

list‑style‑type

listStyleType

text‑decoration

textDecoration

Jak widać, zasada jest prosta – tam, gdzie jest to wymagane, brak minusa zaznaczono przez użycie wielkiej litery. Ten sam sposób formułowania nazw właściwości zastosowano w omawianym przykładzie.

Właściwość style.cssText

Kod źródłowy znajdziesz w archiwum w pliku o nazwie c06.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów style znak równości cudzysłów color dwukropek red średnik font minus weight dwukropek bold średnik cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny div id znak równości cudzysłów b cudzysłów class znak równości cudzysłów klasa cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 5. prawy ukośnik prawy ukośnik Odczytaj style CSS elementu. Linia 6. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 7. alert otwórz nawias okrągły obiekt kropka style kropka cssText zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik Zmień style CSS elementu. Linia 9. prawy ukośnik prawy ukośnik Odkomentowanie linii poniżej zmieni wygląd tekstu dwukropek. Linia 10. prawy ukośnik prawy ukośnik obiekt kropka style kropka cssText znak równości cudzysłów color dwukropek green średnik cudzysłów średnik. Linia 11. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Ta metoda odczytuje w formie tekstowej deklaracje ustawionych w elemencie stylów, ale może je także modyfikować, jeśli znajdzie się po lewej stronie operatora: = (jak w prezentowanym przykładzie).

Jak zmienić zawartość wewnętrzną?

Modyfikacja modelu DOM może także polegać na zmianie tekstu znajdującego się wewnątrz elementu (np. bloku czy akapitu) lub nawet na redefinicji znaczników HTML wewnątrz niego.

Polecenie 3

Wszystkie przedstawione przykłady wpływania na zawartość wewnętrzną obiektów możesz przetestować we własnej przeglądarce internetowej – wystarczy pobrać znajdujące się tu archiwum:

R12NH3Na7HlmB

Przycisk do pobrania pliku ZIP z archiwum.

Plik ZIP o rozmiarze 1.83 KB w języku polskim

Właściwość innerText

Kod źródłowy znajdziesz w archiwum w pliku o nazwie z01.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny p id znak równości cudzysłów b cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny p id znak równości cudzysłów c cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 6. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 7. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik Odczyt właściwości. Linia 9. alert otwórz nawias okrągły obiekt kropka innerText zamknij nawias okrągły średnik. Linia 10. prawy ukośnik prawy ukośnik Przykładowa modyfikacja otwórz nawias okrągły ustawienie zamknij nawias okrągły właściwości. Linia 11. obiekt kropka innerText znak równości cudzysłów otwórz nawias ostrokątny p zamknij nawias ostrokątny Podmieniono wykrzyknik otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny cudzysłów średnik. Linia 12. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Ten atrybut pozwala odczytać lub ustawić tekstową zawartość elementu. Tekstową – czyli pozbawioną znaczników. Zwróćmy uwagę, że przy odczycie akapity traktowane są jako znaki końca linii, a nie jako tagi.

Podobnie przy modyfikacji wartości, pomimo wstawienia tagów <p>Podmieniono!</p> przeglądarka traktuje nawiasy ostre jako encjeencje HTMLencje w tekście, a nie znaczniki HTML.

Właściwość innerHTML

Kod źródłowy znajdziesz w archiwum w pliku o nazwie z02.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny p id znak równości cudzysłów b cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny p id znak równości cudzysłów c cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 6. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 7. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik Odczyt właściwości. Linia 9. alert otwórz nawias okrągły obiekt kropka innerHTML zamknij nawias okrągły średnik. Linia 10. prawy ukośnik prawy ukośnik Przykładowa modyfikacja otwórz nawias okrągły ustawienie zamknij nawias okrągły właściwości. Linia 11. obiekt kropka innerHTML znak równości cudzysłów otwórz nawias ostrokątny p zamknij nawias ostrokątny Witaj otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p zamknij nawias ostrokątny Świecie otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny cudzysłów średnik. Linia 12. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Tym razem uzyskujemy dostęp do wewnętrznej zawartości HTML, czyli zawierającej także znaczniki. Podczas odczytu wnętrza pojemnika w oknie dialogowym pojawiają się tagi, tak też w przypadku modyfikacji możliwa staje się całkowita redefinicja struktury znaczników elementu.

Właściwość outerHTML

Kod źródłowy znajdziesz w archiwum w pliku o nazwie z03.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny p id znak równości cudzysłów b cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny p id znak równości cudzysłów c cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 6. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 7. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik Odczyt właściwości. Linia 9. alert otwórz nawias okrągły obiekt kropka outerHTML zamknij nawias okrągły średnik. Linia 10. prawy ukośnik prawy ukośnik Przykładowa modyfikacja otwórz nawias okrągły ustawienie zamknij nawias okrągły właściwości. Linia 11. obiekt kropka outerHTML znak równości cudzysłów otwórz nawias ostrokątny p zamknij nawias ostrokątny Witaj otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p zamknij nawias ostrokątny Świecie otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny cudzysłów średnik. Linia 12. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Jest to również sposób na dostanie się do zawartości HTML elementu, czyli zawierającej zdefiniowane znaczniki. Tym razem jednak odczyt zwraca także sam element, a więc w naszym przykładzie <div id="a">...</div>.

Warto zwrócić uwagę, że przeprowadzona tu zmiana zawartości zewnętrznej bloku na treść pozbawioną tego pojemnika w praktyce wymazuje ten obiekt ze zmodyfikowanego kodu HTML.

Właściwość textContent

Kod źródłowy znajdziesz w archiwum w pliku o nazwie z04.html:

Linia 1. otwórz nawias ostrokątny div id znak równości cudzysłów a cudzysłów zamknij nawias ostrokątny. Linia 2. otwórz nawias ostrokątny p id znak równości cudzysłów b cudzysłów zamknij nawias ostrokątny Hello otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 3. otwórz nawias ostrokątny p id znak równości cudzysłów c cudzysłów zamknij nawias ostrokątny World otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny. Linia 4. otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny. Linia 6. otwórz nawias ostrokątny script zamknij nawias ostrokątny. Linia 7. var obiekt znak równości document kropka getElementById otwórz nawias okrągły cudzysłów a cudzysłów zamknij nawias okrągły średnik. Linia 8. prawy ukośnik prawy ukośnik Odczyt właściwości. Linia 9. alert otwórz nawias okrągły obiekt kropka textContent zamknij nawias okrągły średnik. Linia 10. prawy ukośnik prawy ukośnik Przykładowa modyfikacja otwórz nawias okrągły ustawienie zamknij nawias okrągły właściwości. Linia 11. obiekt kropka textContent znak równości cudzysłów otwórz nawias ostrokątny p zamknij nawias ostrokątny Witaj Świecie otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny cudzysłów średnik. Linia 12. otwórz nawias ostrokątny prawy ukośnik script zamknij nawias ostrokątny.

Jest to atrybut wprowadzony wcześniej w standardy od właściwości innerText, lecz podobnie z jego pomocą można odczytać lub ustawić tekstową zawartość elementu pozbawioną znaczników.

Istnieje kilka różnic pomiędzy innerText a textContent, najważniejsza z nich jest taka, że właściwość innerText zwróci tylko widoczną zawartość tekstową, a textContent pełny tekst, w tym np. elementy tekstowe ukryte w pojemniku z użyciem właściwości display:none; w arkuszu stylów CSS.

Słownik

API
API

(ang. Application Programming Interface) zestaw udostępnionych klas, metod, funkcji, zmiennych, parametrów, których aplikacja używa w celu zrealizowania zaplanowanych przez programistę zadań

encje HTML
encje HTML

kombinacje tekstowe znaków, używane w celu zastąpienia znaku sterującego w tekście krótką formą tekstową; przykładem może być zastąpienie znaku < encją &lt; – dzięki temu przeglądarka zrozumie, że naszą intencją jest wstawienie otwierającego nawiasu ostrego w tekście witryny, a nie rozpoczynanie w tym miejscu nowego znacznika HTML

kody sterujące
kody sterujące

znaki w danej tablicy kodowej, których celem jest dokonanie jakieś zmiany w sterowaniu urządzeniem przetwarzającym dane; przykładami znaków sterujących w popularnej tablicy ASCII mogą być kody: Escape, Carriage Return czy Line Feed

kompilacja
kompilacja

proces tłumaczenia kodu źródłowego zapisanego w danym języku programowania na inny język, najczęściej język maszynowy; dzięki kompilacji na język maszynowy (przy udziale kilku innych programów wspomagających) powstaje plik wykonywalny, czyli aplikacja możliwa do uruchomienia w ramach danego systemu operacyjnego

metoda
metoda

funkcja należąca do klasy i służąca do operowania na jej obiektach (zmiennych)