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