← Trở về Lộ trình học
Giáo Án Bài 12 (Dành cho Lớp 4)

Đánh Thức Trang Web (Nhập Môn JS)

Hôm nay chúng ta sẽ làm quen với JavaScript (JS) - "năng lượng phép thuật" giúp thổi hồn cho trang web tĩnh trở nên sống động và biết phản hồi khi người dùng tương tác.

🎯 Mục tiêu bài học

  • Hiểu JavaScript là gì qua liên hệ thực tế (Đũa phép của trang web).
  • Ánh xạ sự kiện click chuột trong JS sang khối lệnh Scratch quen thuộc.
  • Sử dụng thành thạo câu lệnh alert() hiển thị hộp thư thoại.
  • Biết cách viết sự kiện onclick nội dòng trên thẻ HTML.
  • Áp dụng thuộc tính CSS cursor: pointer để định hình con trỏ chuột tương tác.

⏱️ Thời lượng & Phân bổ

  • Giới thiệu "Đũa phép JS": 15 phút
  • Sự kiện click & Ánh xạ Scratch: 25 phút
  • Hộp thoại phép thuật alert: 20 phút
  • Định dạng con trỏ chuột pointer: 15 phút
  • Dự án Hộp Quà Bí Mật: 45 phút

15 Phút Hoạt động 1: JavaScript - Đũa Phép Của Trang Web

"Các em đã học HTML để dựng khung xương cho ngôi nhà (trang web), và học CSS để sơn màu, trang trí cho ngôi nhà thật đẹp. Nhưng ngôi nhà đó vẫn đang đứng yên, giống như một bức tranh tĩnh.
Hôm nay, cô/thầy sẽ đưa cho các em một chiếc 'đũa phép' mang tên **JavaScript**. JavaScript sẽ giúp trang web biết hoạt động: khi ta gõ cửa (click chuột), cửa sẽ mở; khi ta bấm nút, trang web sẽ trò chuyện với chúng ta!"

Giáo viên lấy ví dụ thực tế: Một chiếc tivi (HTML là vỏ và màn hình, CSS là màu sắc và viền tivi đẹp mắt, còn JavaScript chính là mạch điện và điều khiển từ xa giúp tivi chuyển kênh khi ta bấm nút).

25 Phút Hoạt động 2: onclick và Liên Hệ Lập Trình Scratch

Để bắt đầu tương tác, ta cần nói cho máy tính biết khi nào thì thực hiện hành động. Cách dễ nhất là khi ta click chuột vào một phần tử nào đó.

Sự so sánh trực quan với Scratch:

Trong Scratch, khi muốn nhân vật hoạt động khi bấm chuột, các em dùng khối:

🖱️ Khi bấm vào nhân vật này (When this sprite clicked)

Trong HTML/JS, chúng ta sử dụng thuộc tính tương đương đặt ngay bên trong thẻ:

onclick="..."

Bất kỳ câu lệnh JavaScript nào đặt bên trong dấu ngoặc kép của onclick sẽ được chạy khi người dùng nhấp chuột vào thẻ đó.

20 Phút Hoạt động 3: alert() - Hộp Thoại Phép Thuật

Câu lệnh đơn giản nhất để gửi một lời chào từ JavaScript là alert(). Câu lệnh này sẽ hiện một hộp thư nhỏ nhảy ra giữa màn hình trình duyệt.

Cú pháp lệnh alert kèm nút bấm:

<button onclick="alert('Lời chào của em')">Bấm vào đây!</button>

Lưu ý quan trọng cho học sinh lớp 4:

  • Chữ hiển thị trong alert() phải được bọc trong dấu nháy đơn '' (vì dấu nháy kép "" đã dùng cho thuộc tính onclick bên ngoài rồi).
  • Nếu viết sai dấu nháy (ví dụ quên đóng nháy), đũa phép sẽ mất linh nghiệm (code bị lỗi).

15 Phút Hoạt động 4: Đổi Trỏ Chuột Tương Tác (cursor: pointer)

Để người dùng biết một hình ảnh hoặc một khối có thể click được, ta nên đổi hình dạng con trỏ chuột từ hình mũi tên sang hình bàn tay chỉ ngón tay khi rê chuột qua.

Định dạng CSS:

.nut-bam {
    cursor: pointer;
}
                

Từ bây giờ, bất kỳ thẻ nào có class nut-bam sẽ tự động xuất hiện ngón tay chỉ khi rê chuột qua, báo hiệu: "Hãy click vào tôi đi!".

🎁 Dự án Thực hành: Hộp Quà Bí Mật Của Candy

Mục tiêu: Tạo một trang web chứa một hình ảnh hộp quà. Khi rê chuột vào hộp quà, con trỏ đổi thành bàn tay chỉ. Khi bấm vào hộp quà, trang web hiện thông báo tặng kẹo ngọt ngào!

Các bước lập trình chi tiết:

  1. Khởi tạo thư mục dự án bai12-1 trong thư mục của em trên ổ Z.
  2. Tạo file index.html và file style.css.
  3. Trong thẻ <body> của index.html, tạo một tiêu đề <h1>: VƯƠNG QUỐC QUÀ TẶNG CANDY.
  4. Tạo một khối <div class="gift-box" onclick="alert('Bùm! Chúc mừng em đã nhận được một viên kẹo mút khổng lồ! 🍭')">.
  5. Bên trong khối gift-box, chèn một hình ảnh hộp quà xinh xắn (tải về assets).
  6. Mở file style.css và định dạng cho lớp .gift-box:
    • Đặt kích thước chiều rộng thích hợp (ví dụ width: 200px;).
    • Căn giữa hộp quà trên màn hình.
    • Thêm thuộc tính cursor: pointer; để đổi trỏ chuột thành hình bàn tay chỉ.
  7. Mở trang web bằng trình duyệt và bấm thử vào hộp quà để tận mắt thấy phép thuật của JavaScript!