Cơ bảnKiến thức cơ bản

DOM trong JavaScript: Cách thao tác HTML bằng JS

8 phút đọc1 lượt xem
#DOM JavaScript#querySelector#addEventListener#thao tác HTML bằng JS#javascript cơ bản

DOM trong JavaScript là gì?

Bạn đã học HTML/CSS nhưng website vẫn "chết" – không có tương tác gì? DOM (Document Object Model) chính là cầu nối để JavaScript thay đổi HTML và làm trang web sinh động.

DOM là gì?

DOM là cấu trúc dữ liệu dạng cây (tree) mà trình duyệt tạo ra khi đọc HTML. JavaScript thao tác DOM để cập nhật trang mà không cần tải lại.

document
└── html
    ├── head → title
    └── body
        ├── h1 → "Xin chào"
        └── p  → "Đây là đoạn văn"

Cách chọn phần tử HTML trong DOM

querySelector – Cách được khuyến dùng nhất

const title = document.querySelector("h1");
const btn = document.querySelector(".btn-primary");
const input = document.querySelector("#username");

querySelectorAll – Chọn nhiều phần tử

const allParagraphs = document.querySelectorAll("p");
allParagraphs.forEach(p => console.log(p.textContent));

Thay đổi nội dung và style

innerHTML và textContent

const box = document.querySelector("#content");
box.innerHTML = "<strong>Chữ đậm</strong>";
box.textContent = "Chỉ là text bình thường";

classList – Thao tác class (cách được khuyến dùng)

const btn = document.querySelector("button");
btn.classList.add("active");
btn.classList.remove("active");
btn.classList.toggle("active");

Tìm hiểu thêm về CSS: CSS là gì?

Xử lý sự kiện với addEventListener

const button = document.querySelector("#myButton");
button.addEventListener("click", () => {
  alert("Button đã được click!");
});

Các loại sự kiện phổ biến

Sự kiệnKhi nào xảy ra
clickNhấp chuột
inputThay đổi input field
submitSubmit form
keydownNhấn phím

Dự án thực hành: To-Do List với DOM

<input type="text" id="todoInput" placeholder="Nhập công việc...">
<button id="addBtn">Thêm</button>
<ul id="todoList"></ul>

<script>
  const input = document.querySelector("#todoInput");
  const addBtn = document.querySelector("#addBtn");
  const list = document.querySelector("#todoList");
  
  addBtn.addEventListener("click", () => {
    if (input.value.trim() === "") return;
    const li = document.createElement("li");
    li.textContent = input.value;
    list.appendChild(li);
    input.value = "";
  });
</script>

Tiếp theo: Async/Await trong JavaScript

Câu hỏi thường gặp

DOM và HTML khác nhau thế nào? HTML là file text. DOM là cấu trúc object mà trình duyệt tạo từ HTML để JavaScript làm việc.

React có dùng DOM trực tiếp không? React dùng Virtual DOM – không cần thao tác DOM trực tiếp. Nhưng hiểu DOM là nền tảng trước khi học React.

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete JavaScript Course 2026: From Zero to Expert!

Khóa học JavaScript toàn diện nhất từ cơ bản đến nâng cao.

4.7499.000 ₫
Xem khóa học →

React - The Complete Guide (incl. React Router & Redux)

Làm chủ React.js với các dự án thực tế, hooks, Redux.

4.6499.000 ₫
Xem khóa học →

Node.js, Express, MongoDB & More: The Complete Bootcamp

Backend với Node.js: REST API, authentication, MongoDB.

4.7499.000 ₫
Xem khóa học →
Quảng cáo