KWALIFIKACJA INF3 - CZERWIEC 2022 (test 2)

PYTANIE NR 31.
W kodzie HTML przypisano pewne znaczniki do klasy o nazwie "nomargin". Aby wykonać za pomocą języka JavaScript operacje na tych znacznikach, można posłużyć się funkcją
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Metoda getElementsByClassName("nomargin") służy do pobrania wszystkich elementów, które mają w atrybucie class wartość "nomargin". getElementById() działa tylko dla id, getElementsByTagName() wyszukuje po nazwie znacznika, a getElement() nie jest metodą standardowego DOM.

Pełne wyjaśnienie:

W JavaScript, aby wykonać operacje na elementach HTML, najpierw trzeba je odnaleźć w drzewie DOM. Jeżeli w kodzie HTML pewne elementy mają przypisaną klasę CSS o nazwie "nomargin", właściwą metodą jest:

getElementsByClassName("nomargin") – zwraca kolekcję (HTMLCollection) wszystkich elementów posiadających tę klasę. Kolekcja jest "żywa", czyli może się aktualizować, gdy DOM się zmienia.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • getElementById("nomargin") – ta metoda służy do pobrania pojedynczego elementu po atrybucie id. Klasa i identyfikator to różne atrybuty i mają inne zastosowanie.
  • getElementsByTagName("nomargin") – wyszukuje elementy po nazwie znacznika (np. div, p, li). "nomargin" jest nazwą klasy, a nie znacznika HTML.
  • getElement("nomargin") – taka metoda nie występuje w standardowym API DOM, więc nie jest prawidłowym sposobem wyboru elementów.

W praktyce, po pobraniu kolekcji trzeba wykonać iterację, np. pętlą, aby zmienić właściwości wielu elementów. Alternatywą bywa querySelectorAll(".nomargin"), które zwraca statyczną listę (NodeList) i pozwala używać pełnych selektorów CSS.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
DOM (Document Object Model) to model drzewa reprezentujący dokument HTML w przeglądarce. Dzięki DOM JavaScript może wyszukiwać elementy strony i modyfikować je: zmieniać treść, style, atrybuty oraz reagować na zdarzenia użytkownika.
Metoda zwraca HTMLCollection wszystkich elementów, które mają w atrybucie class klasę nomargin. Wynik jest "żywy", czyli może się zmieniać po modyfikacji DOM. Zwykle trzeba iterować po elementach, aby wykonać operacje na każdym z nich.
getElementById() wyszukuje po atrybucie id, który powinien być unikalny w dokumencie. Klasa (class) może występować na wielu elementach. Jeśli "nomargin" jest klasą, to getElementById nie znajdzie "wszystkich" takich elementów.
getElementsByTagName() zwraca kolekcję elementów o podanej nazwie znacznika, np. div, p, li. Używa się go, gdy chcesz działać na wszystkich elementach danego typu, a nie na elementach oznaczonych konkretną klasą CSS.
Nie. W standardowym API DOM nie ma metody getElement(). Poprawne są m.in. getElementById(), getElementsByClassName(), getElementsByTagName() oraz selektory CSS przez querySelector() i querySelectorAll().
HTMLCollection jest obiektem "tablicopodobnym", więc można użyć pętli for i indeksów. Często stosuje się też konwersję do tablicy, np. przez Array.from(), aby wygodnie używać metod tablicowych (np. forEach).
HTMLCollection (np. z getElementsByClassName) jest zwykle "żywa" i aktualizuje się wraz ze zmianami DOM. NodeList (np. z querySelectorAll) jest często statyczna. Oba typy mogą wymagać iteracji, ale mają różne właściwości i metody.
querySelectorAll() warto wybrać, gdy potrzebujesz złożonego selektora CSS (np. elementy klasy w konkretnym kontenerze, selektory atrybutów). Daje statyczną listę dopasowań. getElementsByClassName() bywa prostsze i wydajne dla samej klasy.
Najczęstszy błąd to wybór metody "po id" dla elementów opisanych klasą lub odwrotnie. Pomaga zapamiętać: id jest unikalne (1 element), a class grupuje wiele elementów. To bezpośrednio wpływa na dobór metody DOM i typ wyniku.
Opanuj mapę: id → getElementById, class → getElementsByClassName, znacznik → getElementsByTagName, selektory CSS → querySelector/querySelectorAll. Przećwicz krótkie przykłady: pobierz elementy, wykonaj pętlę i zmień styl/tekst.
info

Około 64% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "Metoda getElementsByClassName("nomargin") służy do pobrania wszystkich elementów, które mają w atrybucie class wartość "nomargin"."

Źródła:

  • MDN Web Docs: Document.getElementsByClassName() — https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName (dostęp: 2026-02-18)
  • MDN Web Docs: Document.getElementById() — https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById (dostęp: 2026-02-18)
  • MDN Web Docs: Document.getElementsByTagName() — https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByTagName (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja MDN: metody DOM do wyszukiwania elementów (getElementsByClassName, getElementById, getElementsByTagName, querySelectorAll).
  • Ćwiczenia praktyczne z manipulacji DOM: iteracja po HTMLCollection/NodeList i zmiana stylów.
  • Materiały o selektorach CSS (różnica: .klasa, #id, nazwa znacznika) i ich odpowiednikach w JS.

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego