JavaScript Event คือ **เหตุการณ์ หรือการกระทำที่เกิดขึ้นในเว็บเบราว์เซอร์** ซึ่งอาจเกิดจากการโต้ตอบของผู้ใช้ (เช่น การคลิกเมาส์ การพิมพ์ การเลื่อนหน้าจอ) หรือเกิดจากตัวเบราว์เซอร์เอง (เช่น การโหลดหน้าเว็บเสร็จ). โดย JavaScript จะ **ตอบสนอง** ต่อเหตุการณ์เหล่านี้ผ่าน **Event Listener** (หรือ **On-Event Handler**) ซึ่งเป็นฟังก์ชันที่จะทำงานเมื่อเหตุการณ์ที่กำหนดไว้เกิดขึ้น เพื่อสร้างหน้าเว็บแบบอินเทอร์แอคทีฟ.
JavaScript มี 2 วิธีหลักในการจัดการ Event คือ:
ทำงานเมื่อผู้ใช้คลิก **(ทันสมัยกว่า)**
ผลลัพธ์: (ยังไม่คลิก)
ทำงานเมื่อผู้ใช้คลิก **(แบบเก่า)**
ผลลัพธ์: (ยังไม่คลิก)
โค้ด Event Listener
<button id="btnClick_Listener">คลิกฉันสิ! (Listener)</button>
<p id="clickResult_Listener">ผลลัพธ์: (ยังไม่คลิก)</p>
<script>
document.getElementById("btnClick_Listener").addEventListener("click", function() {
document.getElementById("clickResult_Listener").textContent = "คุณคลิก (Listener) แล้ว!";
});
</script>
โค้ด On-Event Handler
<button onclick="handleClickOnEvent()">คลิกฉันสิ! (On-Event)</button>
<p id="clickResult_OnEvent">ผลลัพธ์: (ยังไม่คลิก)</p>
<script>
function handleClickOnEvent() {
document.getElementById("clickResult_OnEvent").textContent = "คุณคลิก (On-Event) แล้ว!";
}
</script>
เมื่อวางเมาส์/เอาเมาส์ออก (Listener)
สถานะ: -
เมื่อวางเมาส์/เอาเมาส์ออก (On-Event)
สถานะ: -
โค้ด Event Listener
<div id="hoverBox1">วางเมาส์ที่นี่ (Listener)</div>
<p id="hoverResult1">สถานะ: -</p>
<script>
const hoverBox1 = document.getElementById("hoverBox1");
const hoverResult1 = document.getElementById("hoverResult1");
hoverBox1.addEventListener("mouseover", function() {
hoverBox1.style.backgroundColor = "orange";
hoverResult1.textContent = "เมาส์อยู่บนกล่อง (Listener)!";
});
hoverBox1.addEventListener("mouseout", function() {
hoverBox1.style.backgroundColor = "#666";
hoverResult1.textContent = "สถานะ: -";
});
</script>
โค้ด On-Event Handler
<div id="hoverBox2" onmouseover="handleMouseOverOnEvent(this)" onmouseout="handleMouseOutOnEvent(this)">วางเมาส์ที่นี่ (On-Event)</div>
<p id="hoverResult2">สถานะ: -</p>
<script>
function handleMouseOverOnEvent(element) {
element.style.backgroundColor = "orange";
document.getElementById("hoverResult2").textContent = "เมาส์อยู่บนกล่อง (On-Event)!";
}
function handleMouseOutOnEvent(element) {
element.style.backgroundColor = "#666";
document.getElementById("hoverResult2").textContent = "สถานะ: -";
}
</script>
แสดงปุ่มที่พิมพ์ล่าสุด (Listener)
ปุ่มที่กดล่าสุด: -
แสดงปุ่มที่พิมพ์ล่าสุด (On-Event)
ปุ่มที่กดล่าสุด: -
โค้ด Event Listener
<input type="text" id="keyInput_Listener" placeholder="พิมพ์อะไรบางอย่าง (Listener)...">
<p>ปุ่มที่กดล่าสุด: <span id="keyResult_Listener">-</span></p>
<script>
document.getElementById("keyInput_Listener").addEventListener("keyup", function(event) {
document.getElementById("keyResult_Listener").textContent = event.key + " (Listener)";
});
</script>
โค้ด On-Event Handler
<input type="text" id="keyInput_OnEvent" placeholder="พิมพ์อะไรบางอย่าง (On-Event)..." onkeyup="handleKeyUpOnEvent(event)">
<p>ปุ่มที่กดล่าสุด: <span id="keyResult_OnEvent">-</span></p>
<script>
function handleKeyUpOnEvent(event) {
document.getElementById("keyResult_OnEvent").textContent = event.key + " (On-Event)";
}
</script>
เมื่อพิมพ์ข้อมูลในช่อง input แสดงข้อความแบบ real-time
คุณพิมพ์ว่า: -
โค้ด Event Listener
<input type="text" id="inputName" placeholder="พิมพ์ชื่อของคุณ...">
<p>คุณพิมพ์ว่า: <span id="inputResult">-</span></p>
<script>
document.getElementById("inputName").addEventListener("input", function() {
document.getElementById("inputResult").textContent = this.value;
});
</script>
เมื่อเปลี่ยนค่าใน select เปลี่ยนสีพื้นหลัง
โค้ด Event Listener
<select id="colorSelect">
... options ...
</select>
<div id="colorBox" ...>ตัวอย่างพื้นหลัง</div>
<script>
document.getElementById("colorSelect").addEventListener("change", function() {
let color = this.value;
let box = document.getElementById("colorBox");
box.style.backgroundColor = color || "#333";
box.textContent = color ? "พื้นหลังสี " + color : "ยังไม่ได้เลือกสี";
});
</script>
เมื่อส่งฟอร์ม แสดงชื่อที่กรอก (ป้องกันการรีโหลดหน้าด้วย `event.preventDefault()`)
โค้ด Event Listener
<form id="formDemo">
... inputs and button ...
</form>
<p id="formResult"></p>
<script>
document.getElementById("formDemo").addEventListener("submit", function(event) {
event.preventDefault(); // ป้องกันการ reload หน้า
const name = document.getElementById("formName").value;
document.getElementById("formResult").textContent = "ส่งข้อมูลสำเร็จ: " + name;
});
</script>
เมื่อหน้าเว็บโหลดเสร็จ แสดงข้อความ “โหลดเสร็จแล้ว”
โค้ด Event Listener
<p id="loadResult"></p>
<script>
window.addEventListener("load", function() {
document.getElementById("loadResult").textContent = "หน้าเว็บโหลดเสร็จแล้ว ✅";
});
</script>