Dom events/ javascript
#Dom_events
DOM Event หรือ อีเวนต์ (Event) คือ สัญญาณ หรือ การแจ้งเตือน ที่เบราว์เซอร์ส่งออกมาเมื่อมี เหตุการณ์บางอย่างเกิดขึ้น บนหน้าเว็บกล่าวโดยง่ายคือ Event เป็นหัวใจสำคัญที่ทำให้เว็บเพจที่เป็นแค่ HTML นิ่ง ๆ กลายเป็น เว็บแอปพลิเคชันที่มีการโต้ตอบ (Interactive) กับผู้ใช้งานได้ ครับ💡 ความสัมพันธ์ระหว่าง DOM กับ EventDOM (Document Object Model): เปรียบเสมือน โครงสร้าง หรือ แผนที่ ของหน้าเว็บทั้งหมด ซึ่งประกอบด้วย Element ต่าง ๆ (เช่น ปุ่ม, ข้อความ, รูปภาพ)Event (อีเวนต์): คือ สิ่งที่เกิดขึ้น กับ Element เหล่านั้น หรือเกิดขึ้นในเบราว์เซอร์Event ทำให้ JavaScript สามารถ "ดักฟัง" (Listen) การกระทำเหล่านี้ และ "ตอบสนอง" (Respond) ด้วยการรันโค้ดที่เรากำหนดไว้🔔 ตัวอย่างของ DOM Events ที่พบบ่อยEvent สามารถเกิดขึ้นได้จากทั้งการกระทำของผู้ใช้ (User Action) และจากตัวเบราว์เซอร์เอง (Browser Action):กลุ่มของ EventEvent (ตัวอย่าง)ความหมายMouse Eventsclickผู้ใช้คลิกเมาส์บน Elementmouseoverผู้ใช้เลื่อนเมาส์เข้าไปอยู่เหนือ Elementdblclickผู้ใช้ดับเบิลคลิกเมาส์Keyboard Eventskeydownผู้ใช้กดปุ่มคีย์บอร์ดลงไปkeyupผู้ใช้ปล่อยปุ่มคีย์บอร์ดForm Eventssubmitผู้ใช้กดส่งฟอร์ม (Form)changeค่าในช่อง Input, Select, หรือ Textarea เปลี่ยนแปลงDocument/Windowloadหน้าเว็บหรือ Element (เช่น รูปภาพ) โหลดเสร็จสมบูรณ์scrollผู้ใช้เลื่อนหน้าจอขึ้นหรือลง🔗 วิธีการใช้งาน Event ใน JavaScriptการใช้งาน Event จะต้องมีการ "ผูก" (Attach) ฟังก์ชัน (หรือเรียกว่า Event Handler) เข้ากับ Element ที่ต้องการดักฟัง โดยวิธีที่แนะนำที่สุดคือการใช้ addEventListener():JavaScript// 1. เลือก Element ที่ต้องการ
const myButton = document.getElementById('myBtn');
// 2. ใช้ addEventListener เพื่อ "ดักฟัง" Event
myButton.addEventListener('click', function() {
// 3. ฟังก์ชันนี้จะถูกรันเมื่อ Event 'click' เกิดขึ้น
alert('คุณคลิกปุ่มแล้ว!');
});
เมื่อผู้ใช้คลิกปุ่มที่มี ID เป็น myBtn ฟังก์ชัน alert() ก็จะทำงานทันทีพูดง่ายๆ คือ DOM Event คือจุดที่ JavaScript เข้ามา "มีชีวิต" และทำให้เว็บเพจของคุณมีปฏิสัมพันธ์กับผู้ใช้ได้จริงนั่นเองครับ
นอกจากการใช้งาน DOM Events ขั้นพื้นฐานแล้ว การเข้าใจความแตกต่างระหว่าง event types เช่น keydown กับ keyup ก็สำคัญไม่แพ้กัน เช่น ปุ่มคีย์บอร์ดเมื่อกดลง keydown จะถูกเรียกใช้ทันที ส่วน keyup จะถูกเรียกใช้ตอนปล่อยปุ่ม ทำให้เราสามารถควบคุมพฤติกรรมของผู้ใช้ได้ละเอียดขึ้น ในบางกรณี การใช้ addEventListener ยังช่วยให้เราสามารถเพิ่ม event handler หลายๆ ตัวลงใน element เดียวกันโดยไม่ทับซ้อนกัน ต่างจากการใช้ inline event หรือการกำหนดแบบเก่า นอกจากนี้ การเข้าใจกลไก Event Bubbling และ Capturing ใน DOM จะช่วยให้จัดการ event ได้มีประสิทธิภาพมากขึ้น เช่น การเลือกจับ event ที่ element ต้นทางหรือทะยานขึ้นไปยัง ancestor สำหรับผู้ที่อาจเจอปัญหา 500 internal server error apache ตอนทดสอบ JavaScript บนเว็บเซิร์ฟเวอร์ แนะนำตรวจสอบองค์ประกอบฝั่งเซิร์ฟเวอร์และการตั้งค่าการรับส่งข้อมูลพร้อม รวมถึงสิทธิ์ในการเข้าถึงไฟล์ด้วย สุดท้าย อย่าลืมทดสอบการใช้งาน event ในหลากหลายเบราว์เซอร์และอุปกรณ์เพื่อให้แน่ใจว่าเว็บแอปของคุณมีความเสถียรและประสบการณ์การใช้งานที่ดีทั้งบนเดสก์ท็อปและมือถือ













