Ce face getElementsByClassName / getElementsByTagName
getElementsByClassName("a b") returnează elementele care au toate clasele date, getElementsByTagName("li") elementele cu eticheta dată ("*" pentru toate), iar document.getElementsByName câmpurile cu atributul name dat. Primele două există și pe elemente, pentru a căuta doar în interiorul lor.
Rezultatul (HTMLCollection sau NodeList) este viu: se actualizează singur când pagina se schimbă. Asta este diferit de querySelectorAll, care returnează o listă fixă. Colecția nu are forEach sau map; transform-o cu Array.from sau [...].
Parametri
| Parametru | Descriere |
|---|---|
clase / eticheta / nume |
Numele claselor (separate prin spațiu), al etichetei sau valoarea atributului name. |
Ce returnează
O colecție (posibil goală), actualizată automat.
Exemple
Exemplul 1: Liste vii
<ul id="lista"><li class="nou">Ana</li><li>Dan</li></ul>
<script>
const elemente = document.getElementsByTagName("li");
const noi = document.getElementsByClassName("nou");
console.log(elemente.length, noi.length);
document.getElementById("lista").insertAdjacentHTML("beforeend", '<li class="nou">Ioana</li>');
console.log(elemente.length, noi.length);
console.log([...noi].map((li) => li.textContent));
</script>
Rezultat în browser
2 1
3 2
[ 'Ana', 'Ioana' ]
Exemplul 2: Butoanele radio după name
<input type="radio" name="livrare" value="curier" checked>
<input type="radio" name="livrare" value="ridicare">
<script>
const optiuni = document.getElementsByName("livrare");
console.log(optiuni.length, [...optiuni].find((o) => o.checked).value);
</script>
Rezultat în browser
2 curier
Greșeli frecvente
- Ștergi clasa din elementele unei colecții vii într-o buclă
for. Colecția se micșorează în timpul parcurgerii și sari peste elemente; transform-o întâi în tablou. - Scrii
getElementsByClassName(".nou"), cu punct. Metoda primește doar numele clasei.
Comenzi înrudite
document.querySelectorAll: Găsește toate elementele din pagină care se potrivesc cu un selector CSS.document.getElementById: Găsește elementul din pagină cu un anumit id; cea mai rapidă căutare în DOM.Array.from: Creează un tablou nou din orice listă: text, Set, Map, NodeList sau un obiect cu length.