วัตถุ NodeList
คือรายการ (คอลเลกชัน) ของโหนดที่แยกออกมาจาก เอกสาร.
อ็อบเจ็กต์ NodeList
เกือบจะเหมือนกับอ็อบเจ็กต์ HTMLCollection
เบราว์เซอร์ (รุ่นเก่า) บางตัวส่งคืนวัตถุ NodeList แทนที่จะเป็น HTMLCollection สำหรับวิธีการเช่น getElementsByClassName()
เบราว์เซอร์ทั้งหมดส่งคืนวัตถุ NodeList สำหรับคุณสมบัติ childNodes
เบราว์เซอร์ส่วนใหญ่ส่งคืนวัตถุ NodeList สำหรับเมธอด querySelectorAll()
รหัสต่อไปนี้เลือกโหนด <p>
ทั้งหมดในเอกสาร:
const myNodeList = document.querySelectorAll("p");
องค์ประกอบใน NodeList สามารถเข้าถึงได้ด้วยหมายเลขดัชนี
เพื่อเข้าถึง โหนด <p> ที่สองที่คุณสามารถเขียนได้:
myNodeList[1]
หมายเหตุ: ดัชนีเริ่มต้นที่ 0
length
คุณสมบัติกำหนดจำนวนโหนดในรายการโหนด:
myNodelist.length
คุณสมบัติ length
มีประโยชน์เมื่อคุณต้องการวนซ้ำโหนดในโหนด รายการ:
เปลี่ยนสีของทั้งหมด <p> องค์ประกอบในโหนด รายการ:
const myNodelist = document.querySelectorAll("p");
for (let i = 0; i < myNodelist.length; i++) {
myNodelist[i].style.color = "red";
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Hello World!</p>
<p>Hello Norway!</p>
<p>Click the button to change the color of all p elements.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
const myNodelist = document.querySelectorAll("p");
for (let i = 0; i < myNodelist.length; i++) {
myNodelist[i].style.color = "red";
}
}
</script>
</body>
</html>
NodeList และ HTMLcollection เป็นสิ่งเดียวกันมาก
ทั้งสองเป็นคอลเลกชัน (รายการ) ที่เหมือนอาร์เรย์ของโหนด (องค์ประกอบ) ที่แยกมาจาก เอกสาร. สามารถเข้าถึงโหนดได้ด้วยหมายเลขดัชนี ดัชนีเริ่มต้นที่ 0
ทั้งสองมีคุณสมบัติ length ที่ส่งคืนจำนวนองค์ประกอบในรายการ (คอลเลกชัน)
HTMLCollection คือชุดของ องค์ประกอบเอกสาร
NodeList คือชุดของโหนดเอกสาร (โหนดองค์ประกอบ โหนดแอตทริบิวต์ และโหนดข้อความ)
รายการ HTMLCollection สามารถเข้าถึงได้โดยใช้ชื่อ รหัส หรือหมายเลขดัชนี
รายการ NodeList สามารถเข้าถึงได้ด้วยหมายเลขดัชนีเท่านั้น
HTMLCollection จะเป็นคอลเลกชัน สด เสมอ ตัวอย่าง: หากคุณเพิ่มองค์ประกอบ
NodeList มักเป็นคอลเลกชัน คงที่ ตัวอย่าง: หากคุณเพิ่มองค์ประกอบ
getElementsByClassName()
และ getElementsByTagName()
วิธีการส่งคืน HTMLCollection แบบสด
querySelectorAll()
วิธีการส่งกลับ NodeList แบบคงที่
คุณสมบัติ childNodes
ส่งกลับ NodeList แบบสด
NodeList อาจดูเหมือนอาร์เรย์ แต่ไม่ใช่
คุณสามารถวนซ้ำ NodeList และอ้างอิงถึงโหนดตามดัชนี
แต่คุณไม่สามารถใช้เมธอด Array เช่น push(), pop() หรือ join() บน NodeList ได้