A nodeเป็นชื่อสามัญสำหรับวัตถุประเภทใดก็ได้ในลำดับชั้น DOM nodeอาจจะเป็นหนึ่งในตัวองค์ประกอบ DOM เช่นdocumentหรือdocument.bodyมันอาจจะเป็นแท็กที่ระบุไว้ใน HTML เช่น<input>หรือ<p>หรือมันอาจจะเป็นโหนดข้อความที่ถูกสร้างขึ้นโดยระบบจะถือบล็อกข้อความภายในองค์ประกอบอื่น . โดยสรุปแล้ว a nodeคือวัตถุ DOM ใด ๆ
An elementเป็นประเภทหนึ่งที่เฉพาะเจาะจงnodeเนื่องจากมีโหนดประเภทอื่น ๆ อีกมากมาย (โหนดข้อความโหนดความคิดเห็นโหนดเอกสาร ฯลฯ ... )
DOM ประกอบด้วยลำดับชั้นของโหนดที่แต่ละโหนดสามารถมีพาเรนต์รายการของโหนดลูกและ nextSibling และ nextSibling ถัดไป โครงสร้างนั้นเป็นลำดับชั้นที่เหมือนต้นไม้ documentโหนดจะมีรายชื่อของโหนดลูก (คนheadโหนดและbodyโหนด) bodyโหนดจะมีรายชื่อของโหนดลูก (องค์ประกอบระดับบนสุดในหน้าเว็บ HTML ของคุณ) และอื่น ๆ
ดังนั้นเป็นเพียงรายการอาร์เรย์เหมือนของnodeListnodes
องค์ประกอบที่เป็นชนิดที่เฉพาะเจาะจงของโหนดหนึ่งที่สามารถระบุได้โดยตรงในรูปแบบ HTML ที่มีแท็กและสามารถมีคุณสมบัติเหมือนหรือid classสามารถมีลูก ฯลฯ มีโหนดชนิดอื่นเช่นโหนดข้อคิดเห็นโหนดข้อความ ฯลฯ มีคุณสมบัติแตกต่างกัน แต่ละโหนดมีคุณสมบัติ.nodeTypeที่รายงานประเภทของโหนด คุณสามารถดูประเภทต่าง ๆ ของโหนดที่นี่ (แผนภาพจากMDN ):

คุณสามารถเห็นELEMENT_NODEเป็นหนึ่งในประเภทโดยเฉพาะอย่างยิ่งของโหนดที่ทรัพย์สินมีค่าnodeType1
ดังนั้นdocument.getElementById("test")สามารถส่งคืนได้เพียงหนึ่งโหนดเท่านั้นและรับประกันว่าจะเป็นองค์ประกอบ (ประเภทของโหนดเฉพาะ) เพราะการที่มันเพิ่งส่งคืนองค์ประกอบมากกว่ารายการ
เนื่องจากdocument.getElementsByClassName("para")สามารถส่งคืนวัตถุได้มากกว่าหนึ่งวัตถุนักออกแบบจึงเลือกที่จะคืนค่าnodeListเนื่องจากเป็นชนิดข้อมูลที่สร้างขึ้นสำหรับรายการของโหนดมากกว่าหนึ่งโหนด เนื่องจากสิ่งเหล่านี้สามารถเป็นองค์ประกอบเท่านั้น (โดยทั่วไปองค์ประกอบเท่านั้นที่มีชื่อคลาส), ในทางเทคนิคแล้วมันมีnodeListเพียงโหนดประเภทองค์ประกอบในนั้นและนักออกแบบสามารถสร้างคอลเลกชันที่มีชื่อแตกต่างกันที่เป็นelementListแต่พวกเขาเลือกที่จะใช้เพียงประเภทเดียว ของการสะสมไม่ว่าจะมีองค์ประกอบเพียงอย่างเดียวหรือไม่
แก้ไข: HTML5 กำหนดHTMLCollectionซึ่งเป็นรายการขององค์ประกอบ HTML (ไม่โหนดใด ๆ เพียงองค์ประกอบ) จำนวนของคุณสมบัติหรือวิธีการใน HTML5 HTMLCollectionตอนนี้กลับ แม้ว่าจะคล้ายกันมากในส่วนต่อประสานกับ a nodeListแต่ความแตกต่างได้เกิดขึ้นในขณะนี้ซึ่งมีองค์ประกอบเท่านั้นไม่ใช่โหนดชนิดใด ๆ
ความแตกต่างระหว่าง a nodeListและa HTMLCollectionมีผลกระทบเพียงเล็กน้อยต่อวิธีที่คุณใช้ (เท่าที่ฉันสามารถบอกได้) แต่ผู้ออกแบบ HTML5 ได้สร้างความแตกต่างดังกล่าวแล้ว
ตัวอย่างเช่นelement.childrenคุณสมบัติส่งคืน HTMLCollection แบบสด