1. Khi nào sử dụng sự kiện click trong Javascript?

Ta cần bắt sự kiện click khi muốn xây dựng một chức năng nào đó, và chức năng này sẽ xảy ra khi người dùng click vào một đối tượng nào đó.

Ví dụ bạn xây dựng chức năng hiển thị danh sách sinh viên, bạn xây dựng một button Hiển Thị Sinh Viên, nếu người dùng click vào button này thì sẽ gọi Ajax để lấy danh sách và trả kết quả về cho người dùng.

2. Cú pháp sự kiện click trong Javascript

Chúng ta có hai cách để bắt sự kiện click trong js, thứ nhất là gắn trực tiếp trên thẻ HTML, và thứ hai là sử dụng thông qua thuộc tính onclick của các đối tượng DOM.

Cách 1: Gắn trực tiếp trên thẻ HTML

1
<element onclick="event_function()"></element>

Trong đó element là thẻ HTML bạn cần bắt sự kiện click, còn event_function() chính là hàm sẽ được thực thi khi sự kiện click xảy ra.

Ví dụ: Hiển thị thông báo khi người dùng click vào một button.

1
2
3
4
5
6
<input type="button" value="Click me" onclick="showMessage()"/>
<script>
    function showMessage(){
        alert('Sự kiện click xảy ra!');
    }
</script>

Cách 2: Gắn sự kiện click vào đối tượng DOM

Mình sẽ đặt id cho thẻ input trên, sau đó sử dụng các hàm hỗ trợ DOM để gọi đến thẻ này, sau đó gắn một hàm vào thuộc tính click.

1
2
3
4
5
6
7
<input type="button" value="Click me" id="msgbtn"/>
<script>
    var input = document.getElementById('msgbtn');
    input.onclick = function(){
        alert('Bạn đã click vào thẻ này');
    };
</script>

3. Gán nhiều hành động cho sự kiện click cùng lúc

Đối với sự kiện click trong js, bạn có thể gán nhiều hành động vào nhiều thời điểm khác nhau. Tuy nhiên, nó chỉ nhận hành động mà bạn gán cuối cùng thôi nhé.

Ví dụ: Gọi đến hai thông báo khi xảy ra sự kiện click.

1
2
3
4
5
6
7
8
9
10
11
<input type="button" value="Click me" id="msgbtn"/>
<script>
    var input = document.getElementById('msgbtn');
    input.onclick = function(){
        alert('Lần gọi thứ nhất');
    };
     
    input.onclick = function(){
        alert('Lần gọi thứ hai');
    };
</script>


Trong ví dụ trên thì chỉ có hàm thứ hai là được gọi.

Nếu bạn muốn gọi cả hai hàm tách biệt thì tốt nhất định nghĩa hai hàm riêng, sau đó gắn chung một lần vào sự kiện click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<input type="button" value="Click me" id="msgbtn"/>
<script>
    var input = document.getElementById('msgbtn');
    input.onclick = function(){
        showMsg1();
        showMsg2();
    };
     
    function showMsg1(){
        alert('Lần gọi thứ nhất');
    }
     
    function showMsg2(){
        alert('Lần gọi thứ hai');
    }
</script>