Ce face Node.contains / hasChildNodes / normalize
a.contains(b) returnează true dacă b este a însuși sau se află oriunde în interiorul lui. Folosirea clasică: închiderea unui meniu la un clic în afara lui.
hasChildNodes() spune dacă nodul are copii (inclusiv noduri de text, chiar și cele doar cu spații). normalize() unește nodurile de text alăturate și le șterge pe cele goale.
Parametri
| Parametru | Descriere |
|---|---|
nod |
Pentru contains: nodul căutat. |
Ce returnează
contains și hasChildNodes: true sau false. normalize: undefined.
Exemple
Exemplul 1: Închiderea meniului la clic în afară
const meniu = document.querySelector(".meniu");
document.addEventListener("click", (e) => {
if (!meniu.contains(e.target)) {
meniu.hidden = true;
console.log("meniu închis");
}
});
Rezultat în browser
meniu închis
Exemplul 2: Noduri de text
const p = document.createElement("p");
console.log(p.hasChildNodes());
p.append("Bună ", "ziua", "");
console.log(p.childNodes.length);
p.normalize();
console.log(p.childNodes.length, p.textContent);
Rezultat în browser
false
3
1 Bună ziua
Greșeli frecvente
- Folosești
hasChildNodes()ca să verifici dacă un element e „gol” vizual. Spațiile și rândurile noi din HTML sunt noduri de text; verificăchildren.lengthsautextContent.trim().
Comenzi înrudite
Element.closest: Urcă de la element spre părinți și returnează primul care se potrivește cu un selector CSS.addEventListener: Rulează o funcție când se întâmplă ceva pe pagină: un clic, o tastă, trimiterea unui formular.Element.matches: Verifică dacă un element se potrivește cu un selector CSS.