JavaScript ฮ์ทดีดอม ตัวฟังก์ชันเฝาะการณ์
- หน้าก่อน เหตุการณ์ DOM
- หน้าต่อไป การเนื่องเน้น DOM
addEventListener() วิธี
ตัวอย่าง
เพิ่มตัวฟังการตอบเหตุเมื่อผู้ใช้คลิกที่ปุ่ม
document.getElementById("myBtn").addEventListener("click", displayDate);
addEventListener()
วิธีนี้ใช้เพื่อกำหนดกิจกรรมการจัดการเหตุการณ์สำหรับองค์ประกอบที่เฉพาะเจาะจง
addEventListener()
วิธีนี้ใช้เพื่อเพิ่มกิจกรรมการจัดการเหตุการณ์อันดับเดียวกับองค์ประกอบ โดยไม่ทำการลบกิจกรรมการจัดการเหตุการณ์ที่มีอยู่แล้ว
คุณสามารถเพิ่มหลายกิจกรรมการจัดการเหตุการณ์ได้กับองค์ประกอบหนึ่ง
คุณสามารถเพิ่มโปรแกรมการตอบสนองเหตุการณ์ชนิดเดียวกันมากกว่าหนึ่งอันบนองค์ประกอบเดียวกัน ตัวอย่างเช่นสองเหตุการณ์ "click"
คุณสามารถเพิ่มโปรแกรมการตอบสนองเหตุการณ์บนวัตถุ DOM ทุกตัวไม่ใช่แค่องค์ประกอบ HTML เท่านั้น ตัวอย่างเช่น window วัตถุ
addEventListener()
วิธีนี้ทำให้การควบคุมการตอบสนองของเหตุการณ์ต่อ bubble ง่ายขึ้น
ขณะที่ใช้ addEventListener()
วิธีนี้ทำให้ JavaScript และ HTML ต่างกันเพื่อความเข้าใจง่ายขึ้น; แม้ว่าไม่ได้ควบคุม HTML ตัวที่สามก็ยังสามารถเพิ่มตัวติดตามเหตุการณ์ได้
คุณสามารถใช้ removeEventListener()
วิธีนี้ทำให้การลบตัวติดตามเหตุการณ์ง่ายขึ้น
มุมมอง
element.addEventListener(event, function, useCapture);
ปรมาณาที่หนึ่งเป็นชนิดของเหตุการณ์ (เช่น "click" หรือ "mousedown")
ปรมาณาที่สองเป็นฟังก์ชันที่เราต้องการเรียกของเหตุการณ์
ปรมาณาที่สามเป็นค่าบูลและกำหนดว่าใช้ event bubble หรือ event capture ปรมาณานี้เป็นที่เลือกตั้ง
注意:ไม่ควรใช้เหตุการณ์ก่อนชื่อ "on" กรุณาใช้ "click" แทน "onclick"。
เพิ่มโปรแกรมการตอบสนองเหตุการณ์บนองค์ประกอบ
ตัวอย่าง
แสดงข้อความ "Hello World!" ขณะที่ผู้ใช้กดองค์ประกอบ:
element.addEventListener("click", function(){ alert("Hello World!"); });
คุณยังสามารถนำหน้างาน "นาม" นอกตัวฟังก์ชันได้:
ตัวอย่าง
แสดงข้อความ "Hello World!" ขณะที่ผู้ใช้กดองค์ประกอบ:
element.addEventListener("click", myFunction); function myFunction() { alert ("Hello World!"); }
เพิ่มโปรแกรมการตอบสนองเหตุการณ์มากกว่าหนึ่งอันบนองค์ประกอบเดียวกัน
addEventListener()
วิธีนี้ทำให้คุณสามารถเพิ่มเหตุการณ์มากกว่าหนึ่งอันบนองค์ประกอบเดียวกันโดยไม่ทับซ้ำเหตุการณ์ที่มีอยู่แล้ว:
ตัวอย่าง
element.addEventListener("click", myFunction); element.addEventListener("click", mySecondFunction);
คุณสามารถเพิ่มเหตุการณ์ต่าง ๆ บนองค์ประกอบเดียวกันได้:
ตัวอย่าง
element.addEventListener("mouseover", myFunction); element.addEventListener("click", mySecondFunction); element.addEventListener("mouseout", myThirdFunction);
เพิ่มโปรแกรมการตอบสนองเหตุการณ์ที่ Window วัตถุ
addEventListener()
ทำให้คุณสามารถเพิ่มตัวติดตามเหตุการณ์ไปบนวัตถุ DOM HTML ทุกตัว อย่างเช่น องค์ประกอบ HTML วัตถุ HTML วัตถุ window หรือวัตถุที่สนับสนุนเหตุการณ์อื่น อย่างเช่น xmlHttpRequest วัตถุ。
ตัวอย่าง
เพิ่มตัวติดตามเหตุการณ์ที่ทำให้มีการเปลี่ยนแปลงขนาดหน้าต่างของผู้ใช้:
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
ส่งผ่านค่า
เมื่อส่งผ่านค่าที่ต้องการ ใช้ "function" ในรูปแบบนิรนามที่ใช้เรียกฟังก์ชันที่กำหนด
ตัวอย่าง
element.addEventListener("click", function(){ myFunction(p1, p2); });
การแพร่กระจายเหตุการณ์หรือจับกุมเหตุการณ์?
ใน HTML DOM มีวิธีแพร่กระจายเหตุการณ์สองรูปแบบ: แพร่กระจายและจับกุม
การแพร่กระจายเหตุการณ์เป็นวิธีที่กำหนดลำดับขององค์ประกอบเมื่อเกิดเหตุการณ์: หากมี <div> ภายใน <p> และผู้ใช้คลิกองค์ประกอบ <p> ควรประมวลผลเหตุการณ์ "click" ขององค์ประกอบใดก่อน?
ในการแพร่กระจาย องค์ประกอบภายในจะได้รับการประมวลผลก่อนที่จะเป็นองค์ประกอบภายนอกเช่นนี้: ก่อนที่จะประมวลผลเหตุการณ์คลิกของ <p> ให้ประมวลผลเหตุการณ์คลิกของ <div>
ในการจับกุม องค์ประกอบนอกสุดขององค์ประกอบจะได้รับการประมวลผลก่อนที่จะเป็นองค์ประกอบภายในเช่นนี้: ก่อนที่จะประมวลผลเหตุการณ์คลิกของ <div> ให้ประมวลผลเหตุการณ์คลิกของ <p>
ในวิธี addEventListener() คุณสามารถกำหนดรูปแบบการแพร่กระจายโดยใช้ปรมาณ "useCapture"
addEventListener(event, function, useCapture);
ค่าเริ่มต้นคือ false
ถ้าค่านี้ตั้งเป็น จะใช้การแพร่กระจายของฝั่งบริเวณ
true
ตัวอย่าง
ถ้าค่านี้ตั้งเป็น document.getElementById("myP").addEventListener("click", myFunction(), true);
document.getElementById("myDiv").addEventListener("click", myFunction(), true);
removeEventListener()
วิธี removeEventListener() addEventListener()
ตัวแปลที่เพิ่มเหนือนี้ของวิธี
ตัวอย่าง
element.removeEventListener("mousemove", myFunction());
การสนับสนุนบราวเซอร์
ตัวเลขในตารางกำหนดเวอร์ชั่นบราวเซอร์แรกที่สนับสนุนวิธีเหล่านี้อย่างสมบูรณ์
วิธี | |||||
addEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
removeEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
หมายเหตุ:IE 8 และ Opera 6.0 หรือเวอร์ชั่นเก่ากว่านั้นไม่สนับสนุน addEventListener()
และ removeEventListener()
วิธีอุปกรณ์ อย่างไรก็ตาม สำหรับเวอร์ชั่นบราวเซอร์พิเศษเหล่านี้ คุณสามารถใช้ attachEvent()}
วิธีการเพิ่มรายการการจัดการเหตุการณ์ให้กับองค์ประกอบ โดย detachEvent()
วิธีการลบ:
element.attachEvent(event, function); element.detachEvent(event, function);
ตัวอย่าง
แนวทางที่เป็นสามัญ
var x = document.getElementById("myBtn"); if (x.addEventListener) { // สำหรับเบราเซอร์ทั่วไป ยกเว้น IE 8 และเก่ากว่า x.addEventListener("click", myFunction); } else if (x.attachEvent) { // สำหรับ IE 8 และเก่ากว่า x.attachEvent("onclick", myFunction); }
คู่มืออ้างอิงวัตถุเหตุการณ์ HTML DOM
สำหรับรายการเหตุการณ์ HTML DOM ทั้งหมด โปรดเข้าชมเว็บไซต์เต็มของเรา คู่มืออ้างอิงวัตถุเหตุการณ์ HTML DOM.
- หน้าก่อน เหตุการณ์ DOM
- หน้าต่อไป การเนื่องเน้น DOM