Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


JavaScript HTML DOM Navigazione


Con il DOM HTML, puoi navigare nell'albero dei nodi usando le relazioni dei nodi.


Nodi DOM

Secondo lo standard W3C HTML DOM, tutto in un documento HTML è un nodo:

  • L'intero documento è un nodo del documento
  • Ogni elemento HTML è un nodo di elemento
  • Il testo all'interno degli elementi HTML sono nodi di testo
  • Ogni attributo HTML è un nodo di attributo (obsoleto)
  • Tutti i commenti sono nodi di commento
DOM HTML tree

Con il DOM HTML, è possibile accedere a tutti i nodi nell'albero dei nodi tramite JavaScript.

È possibile creare nuovi nodi e tutti i nodi possono essere modificati o eliminati.


Relazioni di nodo

I nodi nell'albero dei nodi hanno una relazione gerarchica tra loro.

I termini genitore, figlio e fratello sono usati per descrivere le relazioni.

  • In un albero di nodi, il nodo superiore è chiamato radice (o nodo radice)
  • Ogni nodo ha esattamente un genitore, eccetto la radice (che non ha genitore)
  • Un nodo può avere più figli
  • I fratelli (fratelli o sorelle) sono nodi con lo stesso genitore
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
Albero dei nodi

Dall'HTML sopra puoi leggere:

  • <html> è il nodo radice
  • <html> non ha genitori
  • <html>è il genitore di <head>e<body>
  • <head> è il primo figlio di <html>
  • <body> è l'ultimo figlio di <html>

e:

  • <head> ha un figlio: <title>
  • <title> ha un figlio (un nodo di testo): "DOM Tutorial"
  • <body>ha due figli: <h1>e<p>
  • <h1> ha un figlio: "DOM Lezione uno"
  • <p> ha un figlio: "Ciao mondo!"
  • <h1>e <p>sono fratelli


Navigazione tra i nodi

Puoi utilizzare le seguenti proprietà del nodo per navigare tra i nodi con JavaScript:

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Nodi figli e valori dei nodi

Un errore comune nell'elaborazione DOM è aspettarsi che un nodo elemento contenga testo.

Esempio:

<title id="demo">DOM Tutorial</title>

Il nodo dell'elemento <title>(nell'esempio sopra) non contiene testo.

Contiene un nodo di testo con il valore "DOM Tutorial".

Il valore del nodo di testo è accessibile dalla innerHTMLproprietà del nodo:

myTitle = document.getElementById("demo").innerHTML;

L'accesso alla proprietà innerHTML equivale all'accesso alla proprietà nodeValue del primo figlio:

myTitle = document.getElementById("demo").firstChild.nodeValue;

L'accesso al primo figlio può essere fatto anche in questo modo:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

Tutti i (3) esempi seguenti recuperano il testo di un <h1>elemento e lo copiano in un <p>elemento:

Esempio

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

Esempio

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

Esempio

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

HTML interno

In questo tutorial utilizziamo la proprietà innerHTML per recuperare il contenuto di un elemento HTML.

Tuttavia, l'apprendimento degli altri metodi di cui sopra è utile per comprendere la struttura ad albero e la navigazione del DOM.


Nodi radice DOM

Esistono due proprietà speciali che consentono l'accesso al documento completo:

  • document.body - Il corpo del documento
  • document.documentElement - Il documento completo

Esempio

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

Esempio

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

La proprietà nodeName

La nodeNameproprietà specifica il nome di un nodo.

  • nodeName è di sola lettura
  • nodeName di un elemento node è uguale al nome del tag
  • nodeName di un attributo node è il nome dell'attributo
  • nodeName di un nodo di testo è sempre #text
  • nodeName del documento node è sempre #document

Esempio

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

Nota: nodeName contiene sempre il nome del tag maiuscolo di un elemento HTML.


La proprietà nodeValue

La nodeValueproprietà specifica il valore di un nodo.

  • nodeValue per i nodi dell'elemento ènull
  • nodeValue per i nodi di testo è il testo stesso
  • nodeValue per i nodi dell'attributo è il valore dell'attributo

La proprietà nodeType

L' nodeTypeimmobile è di sola lettura. Restituisce il tipo di un nodo.

Esempio

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

Le proprietà nodeType più importanti sono:

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

Il tipo 2 è deprecato nel DOM HTML (ma funziona). Non è deprecato nel DOM XML.