La proprietà firstChild in Javascript

La proprietà firstChild mi permette di accedere al primo figlio di un nodo nel DOM.

oggetto.firstChild

Dove "oggetto" è un nodo del DOM (Document Object Model).

Il metodo restituisce il primo figlio del nodo all'interno della struttura ad albero.

Cos'è un nodo? Un "nodo" può essere qualsiasi elemento della pagina, come un paragrafo, una lista, un'immagine, o anche un nodo di testo (come il contenuto effettivo di un elemento).

    Un esempio pratico

    Considero questa semplice pagina web

    1. <html>
    2. <body>
    3. <div id="mioDiv"><b>Parola 1</b>
    4. <u>Parola 2</u>
    5. </div>
    6. <script>
    7. var container = document.getElementById('mioDiv');
    8. var primoFiglio = container.firstChild;
    9. document.write("Primo figlio (firstChild): " + primoFiglio.nodeName + "<br>");
    10. </script>
    11. </body>
    12. </html>

    Lo script cerca un elemento con id=mioDiv tramite il metodo document.getElementById('mioDiv') e lo memorizza nella variabile "container".

    Poi utilizza la proprietà firstChild per trovare il primo nodo figlio di questo nodo e stampa il nome sullo schermo.

    In questo caso il primo figlio del nodo è B ovvero il tag <b>.

    B

    Un aspetto importante da ricordare è che la proprietà firstChild considera tutti i tipi di nodi, inclusi i nodi di testo (spazi bianchi, a capo, ecc.).

    Questo significa che, a volte, firstChild può restituire un nodo di testo (#text) invece di un elemento HTML.

    Ad esempio, se inserisco un ritorno a capo dopo il tag <div>, il risultato finale cambia.

    1. <html>
    2. <body>
    3. <div id="mioDiv">
    4. <b>Parola 1</b>
    5. <u>Parola 2</u>
    6. </div>
    7. <script>
    8. var container = document.getElementById('mioDiv');
    9. var primoFiglio = container.firstChild;
    10. document.write("Primo figlio (firstChild): " + primoFiglio.nodeName + "<br>");
    11. </script>
    12. </body>
    13. </html>

    In questo caso la proprietà firstChild trova come primo figlio del nodo il carattere che indica il ritorno a capo.

    Pertanto, restituisce #text come risultato anziché B.

    #text

    Per evitare questo problema con i nodi di testo, posso utilizzare la proprietà firstElementChild che restituisce il primo nodo che è effettivamente un elemento, ignorando i nodi di testo.

    E così via

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Document in Javascript

    I metodi

    Le proprietà