JavaScript - Document Object Model หรือ DOM

ทุกหน้าเว็บจะอยู่ในหน้าต่างเบราว์เซอร์ซึ่งถือได้ว่าเป็นวัตถุ

วัตถุเอกสารแสดงถึงเอกสาร HTML ที่แสดงในหน้าต่างนั้น อ็อบเจ็กต์ Document มีคุณสมบัติต่างๆที่อ้างถึงอ็อบเจ็กต์อื่นซึ่งอนุญาตให้เข้าถึงและปรับเปลี่ยนเนื้อหาเอกสาร

วิธีการเข้าถึงและแก้ไขเนื้อหาเอกสารเรียกว่าไฟล์ Document Object Model, หรือ DOM. ออบเจ็กต์ถูกจัดเรียงตามลำดับชั้น โครงสร้างลำดับชั้นนี้ใช้กับการจัดระเบียบของออบเจ็กต์ในเอกสารเว็บ

  • Window object- ด้านบนของลำดับชั้น เป็นองค์ประกอบที่อยู่นอกสุดของลำดับชั้นของวัตถุ

  • Document object- เอกสาร HTML แต่ละรายการที่โหลดลงในหน้าต่างจะกลายเป็นวัตถุเอกสาร เอกสารประกอบด้วยเนื้อหาของหน้า

  • Form object - ทุกสิ่งที่อยู่ในแท็ก <form> ... </form> จะตั้งค่าวัตถุฟอร์ม

  • Form control elements - ออบเจ็กต์แบบฟอร์มมีองค์ประกอบทั้งหมดที่กำหนดไว้สำหรับวัตถุนั้นเช่นช่องข้อความปุ่มปุ่มตัวเลือกและช่องทำเครื่องหมาย

นี่คือลำดับชั้นง่ายๆของวัตถุสำคัญบางอย่าง -

มี DOM หลายตัวอยู่ ส่วนต่อไปนี้จะอธิบายรายละเอียดของ DOMs เหล่านี้และอธิบายวิธีที่คุณสามารถใช้เพื่อเข้าถึงและแก้ไขเนื้อหาเอกสาร

  • Legacy DOM - เป็นรุ่นที่เปิดตัวในภาษา JavaScript เวอร์ชันแรก ๆ ได้รับการสนับสนุนอย่างดีจากเบราว์เซอร์ทั้งหมด แต่อนุญาตให้เข้าถึงเฉพาะบางส่วนสำคัญของเอกสารเช่นแบบฟอร์มองค์ประกอบแบบฟอร์มและรูปภาพ

  • W3C DOM - โมเดลอ็อบเจ็กต์เอกสารนี้อนุญาตให้เข้าถึงและแก้ไขเนื้อหาเอกสารทั้งหมดและเป็นมาตรฐานโดย World Wide Web Consortium (W3C) รุ่นนี้ได้รับการสนับสนุนโดยเบราว์เซอร์สมัยใหม่เกือบทั้งหมด

  • IE4 DOM - โมเดลวัตถุเอกสารนี้ถูกนำมาใช้ในเวอร์ชัน 4 ของเบราว์เซอร์ Internet Explorer ของ Microsoft IE 5 และเวอร์ชันที่ใหม่กว่ารวมถึงการสนับสนุนคุณสมบัติพื้นฐานของ W3C DOM

ความเข้ากันได้ของ DOM

หากคุณต้องการเขียนสคริปต์ที่มีความยืดหยุ่นในการใช้ W3C DOM หรือ IE 4 DOM ขึ้นอยู่กับความพร้อมใช้งานคุณสามารถใช้วิธีการทดสอบความสามารถที่ตรวจสอบการมีอยู่ของวิธีการหรือคุณสมบัติก่อนเพื่อตรวจสอบว่าเบราว์เซอร์มี ความสามารถที่คุณต้องการ ตัวอย่างเช่น -

if (document.getElementById) {
   // If the W3C method exists, use it
} else if (document.all) {
   // If the all[] array exists, use it
} else {
   // Otherwise use the legacy DOM
}