DOM là mô hình để JavaScript đọc và thay đổi trang web. Sự kiện giúp trang phản ứng với thao tác của người dùng.
Bạn sẽ học được
- Chọn phần tử bằng querySelector
- Đổi nội dung, thuộc tính, lớp CSS
- Lắng nghe sự kiện click, input, submit
- Tạo và xóa phần tử động
Thuật ngữ cần biết
- DOM
- Cây các phần tử HTML mà trình duyệt tạo ra từ trang.
- Sự kiện (event)
- Điều xảy ra như bấm chuột, gõ phím, gửi biểu mẫu.
- Trình xử lý sự kiện
- Hàm chạy khi sự kiện xảy ra.
- Event delegation
- Gắn một bộ lắng nghe ở phần tử cha để xử lý các con.
Chọn phần tử
const tieuDe = document.querySelector("h1");
const cacNut = document.querySelectorAll(".nut");
const o = document.getElementById("ten");Thay đổi trang
tieuDe.textContent = "Tiêu đề mới";
tieuDe.classList.add("noi-bat");
tieuDe.style.color = "green";
o.setAttribute("placeholder", "Nhập tên");Sự kiện
const nut = document.querySelector("#nut");
nut.addEventListener("click", () => {
alert("Đã bấm");
});
document.querySelector("#ten").addEventListener("input", e => {
console.log(e.target.value);
});Tạo phần tử động
const li = document.createElement("li");
li.textContent = "Việc mới";
document.querySelector("ul").appendChild(li);
li.remove();Tình huống: Danh sách việc cần làm
Ứng dụng nhỏ kinh điển: ô nhập, nút Thêm, danh sách, bấm vào mục để xóa.
<input id="o"><button id="them">Thêm</button><ul id="ds"></ul>const ds = document.querySelector("#ds");
document.querySelector("#them").onclick = () => {
const o = document.querySelector("#o");
if (!o.value.trim()) return;
const li = document.createElement("li");
li.textContent = o.value;
ds.appendChild(li);
o.value = "";
};
ds.addEventListener("click", e => e.target.remove());Mẹo hay
Dùng textContent để chèn chữ; chỉ dùng innerHTML với nội dung bạn tin cậy để tránh lỗ hổng XSS.
Lưu ý
Mã chạy trước khi phần tử tồn tại sẽ nhận null. Đặt script ở cuối trang hoặc dùng defer.
Thực hành
- Làm nút đổi màu nền trang giữa sáng và tối.
- Bộ đếm số lần bấm.
- Biểu mẫu kiểm tra email trước khi gửi, ngăn gửi bằng
e.preventDefault().
Tóm tắt bài học
querySelectorchọn phần tử.addEventListenerlắng nghe sự kiện.createElement,appendChild,removethay đổi cấu trúc trang.