JavaScript - Xử lý sự kiện

Giới thiệu về Xử lý sự kiện trong JavaScript

Xin chào các bạn học lập trình! Hôm nay, chúng ta sẽ cùng khám phá thế giới thú vị của các xử lý sự kiện trong JavaScript. Là giáo viên máy tính gần gũi của bạn, tôi sẽ hướng dẫn bạn qua hành trình này với rất nhiều ví dụ và giải thích. Nên, hãy lấy ly đồ uống yêu thích của bạn, ngồi thoải mái, và cùng bắt đầu nào!

JavaScript - Handler

Xử lý sự kiện là gì trong JavaScript?

Trong JavaScript, một xử lý sự kiện là một hàm được gọi khi một sự kiện cụ thể xảy ra. Hãy tưởng tượng nó như một người giúp việc đặc biệt luôn trong tư thế chờ đợi, sẵn sàng hành động khi có điều gì đó xảy ra. Khi điều đó thực sự xảy ra, xử lý sự kiện của chúng ta sẽ nhảy vào hành động!

Hãy bắt đầu với một ví dụ đơn giản:

let button = document.querySelector('button');
button.onclick = function() {
alert('Xin chào, Thế giới!');
};

Trong đoạn mã này, chúng ta đang nói với JavaScript, "Hey, khi ai đó nhấp vào nút này, hiển thị một thông báo nói 'Xin chào, Thế giới!'". Hàm chúng ta đã gán cho button.onclick chính là xử lý sự kiện của chúng ta.

Các loại xử lý sự kiện phổ biến

JavaScript có rất nhiều loại xử lý sự kiện. Hãy cùng nhìn qua một số loại phổ biến nhất:

Loại xử lý sự kiện Mô tả Ví dụ
onclick Được kích hoạt khi một phần tử được nhấp element.onclick = function() { ... }
onmouseover Được kích hoạt khi con trỏ chuột di qua một phần tử element.onmouseover = function() { ... }
onkeydown Được kích hoạt khi một phím được nhấn xuống document.onkeydown = function(event) { ... }
onload Được kích hoạt khi một trang hoặc hình ảnh hoàn thành việc tải window.onload = function() { ... }
onsubmit Được kích hoạt khi một biểu mẫu được gửi form.onsubmit = function(event) { ... }

Tạo và sử dụng xử lý sự kiện

Phương pháp 1: Thuộc tính HTML

Một cách để tạo xử lý sự kiện là thêm nó trực tiếp vào một phần tử HTML dưới dạng thuộc tính. Dưới đây là một ví dụ:

<button onclick="alert('Đã nhấp!')">Nhấp vào tôi</button>

Khi bạn nhấp vào nút này, nó sẽ hiển thị một thông báo nói "Đã nhấp!". Đơn giản phải không?

Phương pháp 2: Thuộc tính DOM

Một cách linh hoạt hơn là sử dụng JavaScript để gán một xử lý sự kiện cho thuộc tính của một phần tử:

let button = document.querySelector('button');
button.onclick = function() {
console.log('Nút đã bị nhấp!');
};

Phương pháp này cho phép chúng ta thay đổi xử lý sự kiện một cách động và truy cập phần tử bên trong hàm.

Phương pháp 3: addEventListener

Phương pháp mạnh mẽ nhất là sử dụng addEventListener. Nó cho phép chúng ta thêm nhiều xử lý sự kiện cho cùng một sự kiện:

let button = document.querySelector('button');
button.addEventListener('click', function() {
console.log('Xử lý sự kiện đầu tiên');
});
button.addEventListener('click', function() {
console.log('Xử lý sự kiện thứ hai');
});

Bây giờ, khi bạn nhấp vào nút, cả hai thông báo sẽ được ghi lại trong console!

Đối tượng sự kiện

Khi một sự kiện xảy ra, JavaScript tạo một đối tượng 'sự kiện' với các chi tiết về điều đã xảy ra. Chúng ta có thể truy cập đối tượng này trong xử lý sự kiện:

document.onmousemove = function(event) {
console.log('Vị trí con trỏ chuột:', event.clientX, event.clientY);
};

Đoạn mã này ghi lại vị trí con trỏ chuột mỗi khi nó di chuyển. Đối tượng event cung cấp cho chúng ta quyền truy cập vào rất nhiều thông tin hữu ích!

Loại bỏ xử lý sự kiện

Đôi khi, chúng ta cần loại bỏ một xử lý sự kiện. Dưới đây là cách chúng ta có thể làm điều đó:

let button = document.querySelector('button');
function handler() {
console.log('Đã nhấp!');
button.removeEventListener('click', handler);
}
button.addEventListener('click', handler);

Xử lý sự kiện này sẽ chỉ chạy một lần vì nó loại bỏ chính nó sau lần nhấp đầu tiên!

Ví dụ thực tế: Một trò chơi đơn giản

Hãy kết hợp tất cả những gì chúng ta đã học vào một trò chơi nhỏ. Chúng ta sẽ tạo một nút di chuyển khi bạn cố gắng nhấp vào nó:

<button id="catch-me">Bắt tôi nếu bạn có thể!</button>

<script>
let button = document.getElementById('catch-me');
button.addEventListener('mouseover', function() {
let top = Math.random() * (window.innerHeight - this.offsetHeight);
let left = Math.random() * (window.innerWidth - this.offsetWidth);
this.style.top = top + 'px';
this.style.left = left + 'px';
});

button.addEventListener('click', function() {
alert('Chúc mừng! Bạn đã bắt được tôi!');
});
</script>

Trong trò chơi này, nút sẽ di chuyển đến một vị trí ngẫu nhiên mỗi khi bạn cố gắng di chuột qua nó. Nếu bạn manage để nhấp vào nó, bạn sẽ thắng!

Kết luận

Và thế là chúng ta đã xem qua cơ bản về xử lý sự kiện trong JavaScript, từ những gì chúng là đến cách sử dụng chúng trong các tình huống thực tế. Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các khái niệm này.

Như tôi luôn nói với học sinh của mình, lập trình giống như học骑自行车. Nó có thể trông不稳定起初, nhưng với sự thực hành, bạn sẽ nhanh chóngzooming xung quanh! Hãy tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ!

Credits: Image by storyset