Je suis totalement confus entre l'objet Node et l'objet Element. document.getElementById()
renvoie un objet élémentaire tandis que document.getElementsByClassName()
renvoie l'objet NodeList (Collection d'éléments ou de nœuds ?)
Si un div est un Element Object, qu'en est-il de l'objet div Node ?
Qu'est-ce qu'un objet Node ?
L'objet document, l'objet élément et l'objet texte sont-ils également des objets Node ?
Selon le livre de David Flanagan, "L'objet Document, ses objets élémentaires et les objets texte sont tous des objets Node".
Alors comment se fait-il qu'un objet puisse hériter des propriétés/méthodes de l'objet Element ainsi que de l'objet Node ?
Si oui, je suppose que la classe Node et la classe Element sont liées dans l'arbre prototypique d'héritage.
<div id="test">
<p class="para"> 123 </p>
<p class="para"> abc </p>
</div>
<p id="id_para"> next </p>
document.documentElement.toString(); // [object HTMLHtmlElement]
var div = document.getElementById("test");
div.toString(); // [object HTMLDivElement]
var p1 = document.getElementById("id_para");
p1.toString(); // [object HTMLParagraphElement]
var p2 = document.getElementsByClassName("para");
p2.toString(); //[object HTMLCollection]
27 votes
Il existe 12 types de nœuds, dont l'élément.
0 votes
Ces 12 types ne sont-ils pas tous des objets élémentaires ? Comme 1 = ELEMENT_NODE, 3 = TEXT_NODE, je pense que les deux sont des objets élémentaires.
6 votes
Non, ils ne le sont pas. L'élément n'est qu'un seul type de nœud.
0 votes
Est-il encore utilisé de nos jours ? Je pose la question car dans la documentation de Mozilla, il est dit : var elements = document.getElementsByClassName(names) ; elements est une collection HTML en direct des éléments trouvés. Donc, apparemment, getElementsByClassName ne renvoie plus une NodeList.
0 votes
Le WHATWG :
The nodes representing HTML elements in the DOM...
(3.2.2). Un pince-sans-rire pourrait y puiser es une sorte de différence ici. Néanmoins, il semble que la spécification utilise ces termes (nœuds DOM représentant des éléments HTML et juste des éléments HTML) de manière interchangeable.