A node
adalah nama generik untuk semua jenis objek dalam hierarki DOM. A node
bisa menjadi salah satu elemen DOM bawaan seperti document
atau document.body
, bisa berupa tag HTML yang ditentukan dalam HTML seperti <input>
atau <p>
atau bisa juga merupakan simpul teks yang dibuat oleh sistem untuk menahan blok teks di dalam elemen lain . Jadi, singkatnya, a node
adalah objek DOM.
An element
adalah salah satu tipe spesifik node
karena ada banyak tipe node lainnya (node teks, node komentar, node dokumen, dll ...).
DOM terdiri dari hierarki node di mana masing-masing node dapat memiliki orangtua, daftar node anak dan nextSibling danSegling sebelumnya. Struktur itu membentuk hierarki seperti pohon. The document
simpul akan memiliki daftar node anak (yanghead
simpul dan body
simpul). The body
simpul akan memiliki daftar node anak (elemen-elemen tingkat atas di halaman HTML Anda) dan sebagainya.
Jadi, a nodeList
hanyalah sebuah daftar seperti array nodes
.
Elemen adalah tipe node tertentu, yang dapat secara langsung ditentukan dalam HTML dengan tag HTML dan dapat memiliki properti seperti id
atau class
. dapat memiliki anak, dll ... Ada beberapa jenis simpul seperti simpul komentar, simpul teks, dll ... dengan karakteristik berbeda. Setiap node memiliki properti .nodeType
yang melaporkan tipe node apa itu. Anda dapat melihat berbagai jenis node di sini (diagram dari MDN ):
Anda dapat melihat ELEMENT_NODE
adalah salah satu jenis simpul tertentu di mana nodeType
properti memiliki nilai 1
.
Jadi document.getElementById("test")
hanya bisa mengembalikan satu simpul dan dijamin menjadi elemen (tipe simpul tertentu). Karena itu hanya mengembalikan elemen daripada daftar.
Karena document.getElementsByClassName("para")
dapat mengembalikan lebih dari satu objek, perancang memilih untuk mengembalikan nodeList
karena itulah tipe data yang mereka buat untuk daftar lebih dari satu node. Karena ini hanya dapat berupa elemen (hanya elemen yang biasanya memiliki nama kelas), secara teknis ini adalah nodeList
yang hanya memiliki node tipe elemen di dalamnya dan desainer dapat membuat koleksi dengan nama berbeda yang merupakan elementList
, tetapi mereka memilih untuk menggunakan hanya satu jenis koleksi apakah itu hanya memiliki elemen di dalamnya atau tidak.
EDIT: HTML5 mendefinisikan HTMLCollection
yang merupakan daftar Elemen HTML (bukan sembarang simpul, hanya Elemen). Sejumlah properti atau metode dalam HTML5 sekarang mengembalikan sebuahHTMLCollection
. Meskipun sangat mirip dalam antarmuka dengan nodeList
, perbedaan sekarang dibuat karena hanya berisi Elemen, bukan semua jenis node.
Perbedaan antara a nodeList
dan a HTMLCollection
memiliki sedikit dampak pada bagaimana Anda menggunakan satu (sejauh yang saya tahu), tetapi desainer HTML5 kini telah membuat perbedaan itu.
Misalnya, element.children
properti mengembalikan HTMLCollection langsung.