A node
è il nome generico per qualsiasi tipo di oggetto nella gerarchia DOM. Uno node
potrebbe essere uno degli elementi DOM incorporati come document
o document.body
, potrebbe essere un tag HTML specificato nell'HTML come <input>
o <p>
o potrebbe essere un nodo di testo che viene creato dal sistema per contenere un blocco di testo all'interno di un altro elemento. Quindi, in poche parole, uno node
è un qualsiasi oggetto DOM.
Un element
è uno specifico tipo di node
in quanto vi sono molti altri tipi di nodi (nodi di testo, nodi di commento, nodi di documenti, ecc.).
Il DOM è costituito da una gerarchia di nodi in cui ciascun nodo può disporre di un padre, un elenco di nodi figlio e un successivo di Sibilla e precedente. Quella struttura forma una gerarchia ad albero. Il nodo document
dovrebbe avere il proprio elenco di nodi secondari (il nodo head
e il nodo body
). Il nodo body
dovrebbe avere il proprio elenco di nodi figli (gli elementi di livello superiore nella pagina HTML) e così via.
Quindi, uno nodeList
è semplicemente un elenco di tipo array di nodes
.
Un elemento è un tipo specifico di nodo, uno che può essere specificato direttamente nell'HTML con un tag HTML e può avere proprietà come id
o class
. può avere figli, ecc. Ci sono altri tipi di nodi come nodi di commento, nodi di testo, ecc. con caratteristiche diverse. Ogni nodo ha una proprietà .nodeType
che segnala quale tipo di nodo è. È possibile vedere i vari tipi di nodi here (diagramma da MDN):
si può vedere un ELEMENT_NODE
è un particolare tipo di nodo in cui la proprietà nodeType
ha un valore di 1
.
Quindi document.getElementById("test")
può restituire solo un nodo ed è garantito che sia un elemento (un tipo specifico di nodo). Per questo motivo restituisce semplicemente l'elemento anziché una lista.
Poiché document.getElementsByClassName("para")
può restituire più di un oggetto, i progettisti hanno scelto di restituire un nodeList
perché questo è il tipo di dati che hanno creato per un elenco di più di un nodo. Dal momento che questi possono essere solo elementi (solo gli elementi in genere hanno un nome di classe), è tecnicamente uno nodeList
che contiene solo nodi di tipo elemento ei designer potrebbero aver creato una raccolta con un nome diverso che era elementList
, ma hanno scelto di utilizzare solo un tipo di raccolta, se avesse o meno elementi in essa contenuti.
EDIT: HTML5 definisce una HTMLCollection
che è un elenco di elementi HTML (non qualsiasi nodo, solo elementi). Un numero di proprietà o metodi in HTML5 ora restituiscono uno HTMLCollection
. Anche se è molto simile nell'interfaccia di un nodeList
, ora viene fatta una distinzione in quanto contiene solo elementi, non alcun tipo di nodo.
La distinzione tra uno nodeList
e uno HTMLCollection
ha un impatto minimo su come si utilizza uno (per quanto posso dire), ma i progettisti di HTML5 hanno fatto questa distinzione.
Ad esempio, la proprietà element.children
restituisce un HTMLCollection attivo.
Ci sono 12 tipi di nodi, l'elemento essendo uno di questi – Esailija
non tutti questi 12 tipi sono anche oggetto elemento? come 1 = ELEMENT_NODE, 3 = TEXT_NODE, penso che entrambi siano anche oggetto Element. –
No, non lo sono. L'elemento è solo un singolo tipo di nodo. – Esailija