Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีเรียกฟังก์ชัน JavaScript จาก Event onClick

Event onClick คืออะไร

เหตุการณ์ onclick เกิดขึ้นเมื่อผู้ใช้คลิกปุ่มซ้ายของเมาส์ที่องค์ประกอบ HTML ใดๆ นี่คือ Event ที่ใช้บ่อยที่สุดสำหรับการโต้ตอบผู้ใช้

วิธีการผูก Event Handler

1. Inline HTML Attribute (แบบเก่า)

<input type="button" onclick="display()" value="Click me" />

2. DOM Property (แบบเก่า)

document.getElementById("myBtn").onclick = display;

3. addEventListener (แนะนำ - มาตรฐานสมัยใหม่)

document.getElementById("myBtn").addEventListener("click", display);

ตัวอย่างโค้ดสมบูรณ์

<html>
<head>
  <script>
    function display() {
      alert("Hello World");
    }
  </script>
</head>
<body>
  <p>Click the following button and see result</p>
  <form>
    <input type="button" onclick="display()" value="Click me" />
  </form>
</body>
</html>

ส่ง Parameter ให้ฟังก์ชัน

<!-- Inline -->
<button onclick="greet('John')">Greet John</button>

<!-- addEventListener -->
<button id="btn">Greet Jane</button>
<script>
  document.getElementById("btn").addEventListener("click", function() {
    greet("Jane");
  });
  
  function greet(name) {
    alert("Hello, " + name + "!");
  }
</script>

Object Event (Event Object)

ฟังก์ชัน Handler จะรับอาร์กิวเมนต์ event (หรือ e) อัตโนมัติ:

function handleClick(event) {
  console.log("Element clicked:", event.target);
  console.log("Mouse position:", event.clientX, event.clientY);
  event.preventDefault(); // ยกเลิกพฤติกรรมเริ่มต้น (เช่น link)
}

แนวทางปฏิบัติที่ดี (Best Practices)

  • ใช้ addEventListener แทน Inline Attribute (Separation of Concerns)
  • ใช้ Named Function แทน Anonymous Function เพื่อให้ Remove Event ได้
  • หลีกเลี่ยง Inline Script ใน HTML Attribute
  • ใช้ Event Delegation สำหรับองค์ประกอบที่สร้างไดนามิกหรือจำนวนมาก

สรุป

การเรียกฟังก์ชันจาก onclick ทำได้หลายวิธี แต่อย่างดีที่สุดคือใช้ addEventListener ซึ่งยืดหยุ่น รองรับหลาย Handler และจัดการได้ดีกว่า