A nodeadalah nama generik untuk semua jenis objek dalam hierarki DOM. A nodebisa menjadi salah satu elemen DOM bawaan seperti documentatau 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 nodeadalah objek DOM.
An elementadalah salah satu tipe spesifik nodekarena 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 documentsimpul akan memiliki daftar node anak (yanghead simpul dan bodysimpul). The bodysimpul 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 idatau class. dapat memiliki anak, dll ... Ada beberapa jenis simpul seperti simpul komentar, simpul teks, dll ... dengan karakteristik berbeda. Setiap node memiliki properti .nodeTypeyang melaporkan tipe node apa itu. Anda dapat melihat berbagai jenis node di sini (diagram dari MDN ):

Anda dapat melihat ELEMENT_NODEadalah salah satu jenis simpul tertentu di mana nodeTypeproperti 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 nodeListkarena 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 nodeListyang 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 HTMLCollectionyang 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 HTMLCollectionmemiliki sedikit dampak pada bagaimana Anda menggunakan satu (sejauh yang saya tahu), tetapi desainer HTML5 kini telah membuat perbedaan itu.
Misalnya, element.childrenproperti mengembalikan HTMLCollection langsung.