Nhiệm vụ của bạn
Lần này không có bài mới. Bạn nhận danh sách việc, và đã biết đủ để làm. Đúng cách lập trình viên thật làm việc: nhận yêu cầu và ghép từ những gì đã biết.
Phần bắt buộc 🎯
Duyệt website và đảm bảo cả năm phép thuật của cấp này đang sống:
- Script nối trên mọi trang và không lỗi trong console (F12 – không có chữ đỏ).
- Chế độ tối – công tắc trong header mọi trang, và lựa chọn được nhớ.
- Nút hoặc bộ đếm tương tác – ít nhất một phép với biến và điều kiện.
- Thư viện ảnh có lightbox – bấm ảnh phóng to.
- Câu đố hoặc form có kiểm tra – ít nhất một trong hai. Làm cả hai cũng được!
Phần mở rộng tùy chọn 🌟
Chọn ít nhất một (hoặc tự nghĩ):
Lời chào theo giờ trong ngày
Website chào khác buổi sáng và buổi tối:
<p id="day-greeting"></p>
const dayGreeting = document.getElementById("day-greeting");
const hour = new Date().getHours();
if (hour < 9) {
dayGreeting.textContent = "Good morning! ☀️";
} else if (hour < 18) {
dayGreeting.textContent = "Hi there, have a nice day!";
} else {
dayGreeting.textContent = "Good evening! 🌙";
}
new Date() trả về ngày giờ hiện tại, .getHours() lấy giờ ra.
Tin nhắn ngẫu nhiên mỗi lần bấm
Mỗi lần một câu cười, ý tưởng chuyến đi, hoặc khẩu hiệu đội khác:
const messages = [
"Practice makes perfect!",
"Let's go, Eagles! 🦅",
"You miss every shot you don't take.",
"Fans are the twelfth player.",
];
const messageButton = document.getElementById("message-button");
const messageEl = document.getElementById("message");
messageButton.addEventListener("click", () => {
const random = Math.floor(Math.random() * messages.length);
messageEl.textContent = messages[random];
});
Math.random() trả số ngẫu nhiên từ 0 đến 1, phần còn lại biến thành vị trí ngẫu nhiên trong mảng.
Bộ đếm lượt mở (chỉ bạn thấy)
Bạn mở website bao nhiêu lần? Lưu trong localStorage:
let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");
Number(...) đổi chữ trong bộ nhớ thành số, và ?? 0 nghĩa là “nếu chưa có gì, bắt đầu từ 0.”
Mục thu gọn (accordion)
Ẩn thực đơn dài hoặc danh sách đội dưới tiêu đề bấm được:
const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");
sectionHeading.addEventListener("click", () => {
sectionContent.classList.toggle("hidden");
});
Bạn đã có class .hidden { display: none !important; } từ bài thư viện ảnh.
Đưa phiên bản mới lên internet
Website trên GitHub Pages vẫn là bản cũ từ Cấp 1! Tải bản mới lên:
- Mở repository trên github.com,
- Add file → Upload files,
- kéo file đã đổi (chủ yếu
script.js,style.css, và mọi file.html) và bấm Commit changes.
Một phút sau, phép thuật chạy cho mọi người xem.
Chúc mừng, Phù thủy! 🪄 Website không còn chỉ đẹp – nó sống. Phản ứng click, nhớ lựa chọn, hỏi và trả lời. Và bạn biết từng dòng hoạt động thế nào. Ở Cấp 3 – Bậc thầy, bạn học làm website như pro: React, component, và server riêng.
Điều cần nhớ từ cấp này
- JavaScript: biến, điều kiện, function, mảng, object, vòng lặp – nền tảng mọi lập trình.
- Công thức phép: tìm phần tử → lắng nghe sự kiện → hành động.
localStorageđể nhớ,querySelectorAll+forEachcho nhóm phần tử, kiểm tra nhập form.
© 2026 Ing. Martin Polak / AlgoRhino · Điều khoản sử dụng nội dung