Tìm hiểu HTML DOM Document trong JavaScript

JavaScript HTML DOM | by Học Javascript

Trong lập trình web, JavaScript đóng vai trò quan trọng trong việc tạo ra các trang web tương tác và linh hoạt. Một trong những thành phần cốt lõi giúp JavaScript có thể thao tác với nội dung trang web chính là HTML DOM Document. Đây là một mô hình tài liệu cung cấp các phương thức và thuộc tính để truy cập, thay đổi và quản lý các phần tử HTML. Thông qua HTML DOM Document, lập trình viên có thể thực hiện các tác vụ như thay đổi nội dung trang web, xử lý sự kiện, cập nhật giao diện mà không cần tải lại trang. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về HTML DOM Document, cách truy xuất và chỉnh sửa các phần tử HTML, cũng như ứng dụng thực tế trong lập trình web.

HTML DOM là gì?

Định nghĩa HTML DOM

HTML DOM (Document Object Model) là một mô hình cây phân cấp thể hiện cấu trúc của tài liệu HTML. Nó định nghĩa cách thức JavaScript có thể truy cập và thao tác với các phần tử HTML thông qua một tập hợp các đối tượng, thuộc tính và phương thức.

Ví dụ về mô hình DOM của một tài liệu HTML đơn giản:

HTML gốc:

<!DOCTYPE html>
<html>
<head>
    <title>Trang Web</title>
</head>
<body>
    <h1>Chào mừng bạn!</h1>
    <p>Đây là nội dung trang web.</p>
</body>
</html>

Mô hình DOM tương ứng:

Document
 ├── html
      ├── head
      │   ├── title
      ├── body
          ├── h1
          ├── p

DOM tạo ra một cây phân cấp giúp JavaScript dễ dàng truy cập và thay đổi từng phần tử trên trang web.

Đặc điểm của HTML DOM

  • Mô hình dạng cây: Mỗi phần tử HTML là một node trong cây DOM.

  • Có thể thay đổi động: JavaScript có thể sử dụng DOM để chỉnh sửa nội dung trang web mà không cần tải lại trang.

  • Cung cấp API mạnh mẽ: DOM hỗ trợ nhiều phương thức để thao tác với phần tử HTML như truy vấn, chỉnh sửa, tạo mới hoặc xóa bỏ phần tử.

Vai trò của document trong JavaScript

Trong JavaScript, document là đối tượng gốc đại diện cho toàn bộ tài liệu HTML. Nó cung cấp các phương thức và thuộc tính để truy cập và thao tác với trang web.

Truy xuất nội dung của trang web

document giúp JavaScript đọc thông tin từ trang web, ví dụ:

console.log(document.title);  // Lấy tiêu đề trang
console.log(document.URL);    // Lấy URL của trang

Thay đổi nội dung trang web

JavaScript có thể sử dụng document để thay đổi nội dung của trang web một cách linh hoạt.

document.title = "Tiêu đề mới";  // Thay đổi tiêu đề trang
document.body.style.backgroundColor = "lightblue"; // Đổi màu nền trang

Thêm hoặc xóa phần tử HTML

JavaScript có thể tạo mới hoặc xóa các phần tử trên trang.

let newElement = document.createElement("p");  
newElement.textContent = "Đây là đoạn văn mới!";  
document.body.appendChild(newElement); // Thêm vào body

Xử lý sự kiện người dùng

document giúp JavaScript lắng nghe và phản hồi các sự kiện từ người dùng như nhấp chuột, nhập liệu, di chuột, v.v.

document.getElementById("myButton").addEventListener("click", function() {
    alert("Bạn vừa nhấn nút!");
});

Cách JavaScript tương tác với HTML thông qua DOM

JavaScript có thể thao tác với HTML DOM thông qua ba hoạt động chính:

  • Truy xuất phần tử HTML

  • Thay đổi hoặc cập nhật phần tử HTML

  • Thêm, xóa hoặc xử lý sự kiện trên phần tử HTML

Truy xuất phần tử HTML

JavaScript sử dụng các phương thức sau để lấy phần tử HTML:

Truy cập theo ID:

let element = document.getElementById("myID");

Truy cập theo class:

let elements = document.getElementsByClassName("myClass");
Truy cập theo tên thẻ:
let elements = document.getElementsByTagName("p");

Truy cập bằng CSS selector:

let element = document.querySelector(".myClass"); // Lấy phần tử đầu tiên
let elements = document.querySelectorAll("p");  // Lấy tất cả thẻ <p>

Các cách truy cập phần tử trong Document

Khi thao tác với HTML DOM trong JavaScript, một trong những nhiệm vụ quan trọng nhất là truy cập các phần tử HTML. JavaScript cung cấp nhiều phương thức để tìm và chọn phần tử dựa trên ID, class, tag hoặc CSS selector. Dưới đây là các cách phổ biến để truy cập phần tử trong Document.

document.getElementById() – Truy cập theo ID

Mô tả:

Phương thức document.getElementById() giúp lấy phần tử dựa trên giá trị ID của nó. ID là một thuộc tính duy nhất, vì vậy phương thức này luôn trả về một phần tử duy nhất hoặc null nếu không tìm thấy.

Cú pháp:

let element = document.getElementById("myID");

JavaScript:

function changeText() {
    let element = document.getElementById("demo");
    element.innerHTML = "Nội dung đã thay đổi!";
}

Ưu điểm: Truy vấn nhanh, hiệu suất cao vì ID là duy nhất.
Nhược điểm: Chỉ tìm được một phần tử duy nhất.

document.getElementsByClassName() – Truy cập theo class

Mô tả:

Phương thức document.getElementsByClassName() giúp truy xuất tất cả phần tử có cùng class và trả về một HTMLCollection (mảng-like).

Cú pháp:

let elements = document.getElementsByClassName("myClass");

Ví dụ:

HTML:

<p class="highlight">Dòng 1</p>
<p class="highlight">Dòng 2</p>
<button onclick="changeColor()">Đổi màu</button>

JavaScript:

function changeColor() {
    let elements = document.getElementsByClassName("highlight");
    for (let i = 0; i < elements.length; i++) {
        elements[i].style.color = "red";
    }
}

Ưu điểm: Cho phép truy vấn nhiều phần tử cùng class.
Nhược điểm: Trả về HTMLCollection, không phải mảng thực sự (không thể dùng map(), forEach() trực tiếp).

document.getElementsByTagName() – Truy cập theo tên thẻ

Mô tả:

Phương thức document.getElementsByTagName() giúp lấy tất cả phần tử có cùng tên thẻ (tag name), ví dụ như <p>, <div>, <a>. Nó cũng trả về một HTMLCollection.

Cú pháp:

let elements = document.getElementsByTagName("p");

Ví dụ:

HTML:

<p>Đoạn văn thứ nhất</p>
<p>Đoạn văn thứ hai</p>
<button onclick="highlightParagraphs()">Tô đậm</button>

JavaScript:

function highlightParagraphs() {
    let paragraphs = document.getElementsByTagName("p");
    for (let i = 0; i < paragraphs.length; i++) {
        paragraphs[i].style.fontWeight = "bold";
    }
}

Ưu điểm: Dễ dàng lấy tất cả phần tử của một loại thẻ.
Nhược điểm: Trả về HTMLCollection, không hỗ trợ nhiều phương thức mảng.

document.querySelector() – Truy cập theo CSS Selector

Mô tả:

Phương thức document.querySelector() giúp tìm phần tử đầu tiên khớp với CSS Selector (ID, class, tag, hoặc tổ hợp selector).

Cú pháp:

let element = document.querySelector("CSS_SELECTOR");

Ví dụ:

HTML:

<p class="highlight">Đây là đoạn văn</p>
<button onclick="changeText()">Thay đổi nội dung</button>

JavaScript:

function changeText() {
    let element = document.querySelector(".highlight"); // Chọn phần tử đầu tiên có class 'highlight'
    element.innerHTML = "Nội dung mới!";
}

Ưu điểm: Linh hoạt, hỗ trợ CSS selector, có thể chọn ID, class, tag hoặc tổ hợp.

Nhược điểm: Chỉ chọn phần tử đầu tiên tìm thấy.

document.querySelectorAll() – Truy cập tất cả phần tử theo CSS Selector

Mô tả:

Phương thức document.querySelectorAll() giúp truy xuất tất cả phần tử khớp với CSS Selector và trả về một NodeList (có thể sử dụng forEach()).

Cú pháp:

let elements = document.querySelectorAll("CSS_SELECTOR");

Ví dụ:

HTML:

<p class="highlight">Dòng 1</p>
<p class="highlight">Dòng 2</p>
<button onclick="changeColor()">Đổi màu</button>
JavaScript:
function changeColor() {
    let elements = document.querySelectorAll(".highlight");
    elements.forEach(element => {
        element.style.color = "blue";
    });
}

Ưu điểm: Linh hoạt, chọn được nhiều phần tử, có thể sử dụng forEach().
Nhược điểm: Chậm hơn getElementById(), getElementsByClassName(), getElementsByTagName().

Thuộc tính quan trọng của document trong JavaScript

Trong JavaScript, đối tượng document cung cấp nhiều thuộc tính giúp truy cập thông tin về trang web hiện tại. Dưới đây là 5 thuộc tính quan trọng mà lập trình viên thường sử dụng để lấy hoặc thay đổi nội dung trang web.

document.title – Lấy hoặc thay đổi tiêu đề trang

document.title giúp lấy hoặc thay đổi tiêu đề của trang web, chính là nội dung bên trong thẻ <title> trong HTML.

Cú pháp:

console.log(document.title);  // Lấy tiêu đề hiện tại
document.title = "Tiêu đề mới";  // Thay đổi tiêu đề

Ví dụ:

HTML:

<head>
    <title>Trang web ban đầu</title>
</head>
<body>
    <button onclick="changeTitle()">Đổi tiêu đề</button>
</body>
JavaScript:
function changeTitle() {
    document.title = "Tiêu đề đã thay đổi!";
}

Ứng dụng:

  • Thay đổi tiêu đề trang theo sự kiện người dùng.

  • Hiển thị thông báo trong tiêu đề khi có tin nhắn mới (giống Facebook, Gmail).

document.URL – Lấy URL hiện tại

document.URL cho phép lấy đường dẫn URL đầy đủ của trang web hiện tại.

Cú pháp:

console.log(document.URL);  // Lấy URL trang web
Ví dụ:
document.write("URL của trang hiện tại là: " + document.URL);

Nếu trang web có URL:

https://www.example.com/page.html?query=123
Kết quả hiển thị sẽ là:
URL của trang hiện tại là: https://www.example.com/page.html?query=123

Ứng dụng:

  • Kiểm tra URL hiện tại trong JavaScript.

  • Phân tích tham số URL để thực hiện hành động phù hợp.

document.domain – Lấy domain của trang

document.domain giúp lấy tên miền (domain) của trang web hiện tại, bỏ qua phần giao thức (http/https) và đường dẫn chi tiết.

Cú pháp:

console.log(document.domain);  // Lấy tên miền của trang web

Ví dụ:

Nếu trang web có URL:

https://www.example.com/page.html

Thì kết quả sẽ là:

console.log(document.domain); // "example.com"

Ứng dụng:

  • Kiểm tra nguồn gốc của trang web (useful cho bảo mật).

  • Hỗ trợ các kỹ thuật Cross-Origin Scripting khi làm việc với iframe hoặc API.

Lưu ý:
Nếu trang web sử dụng document.domain để thay đổi tên miền, nó chỉ có thể thay đổi tên miền cấp cao hơn (ví dụ: sub.example.com có thể chuyển thành example.com, nhưng không thể chuyển thành google.com).

document.body – Truy cập thẻ <body>

document.body giúp truy cập trực tiếp đến thẻ <body> của trang web để thay đổi nội dung hoặc thao tác với nó.

Cú pháp:

console.log(document.body);  // Trả về toàn bộ nội dung trong <body>

Ví dụ:

HTML:

<body>
    <p id="content">Đây là nội dung gốc</p>
    <button onclick="changeBody()">Thay đổi nền</button>
</body>

JavaScript:

function changeBody() {
    document.body.style.backgroundColor = "lightblue"; // Đổi màu nền body
}

Ứng dụng:

  • Thay đổi giao diện trang web mà không cần CSS.

  • Thêm hoặc xóa nội dung trong thẻ <body>.

document.head – Truy cập thẻ <head>

document.head giúp truy cập trực tiếp đến phần <head> của trang web, nơi chứa metadata, tiêu đề và các thẻ <script>, <link> (CSS), <meta>, v.v.

Cú pháp:

console.log(document.head);  // Trả về nội dung trong <head>

Ví dụ:

Thêm một CSS mới vào trang web bằng JavaScript:

let style = document.createElement("style");
style.innerHTML = "body { font-family: Arial, sans-serif; }";
document.head.appendChild(style);

Ứng dụng:

  • Thêm hoặc sửa đổi CSS/JavaScript động.

  • Kiểm tra và thao tác với thẻ <meta> hoặc <link> (ví dụ: đổi favicon).

Thuộc tính Chức năng Ví dụ sử dụng
document.title Lấy hoặc thay đổi tiêu đề trang document.title = "Tiêu đề mới";
document.URL Lấy URL đầy đủ của trang console.log(document.URL);
document.domain Lấy domain của trang console.log(document.domain);
document.body Truy cập nội dung trong <body> document.body.style.backgroundColor = "yellow";
document.head Truy cập nội dung trong <head> console.log(document.head);

Các phương thức thao tác với Document trong JavaScript

JavaScript cung cấp nhiều phương thức giúp tạo mới, chỉnh sửa nội dung và thay đổi thuộc tính của các phần tử trong tài liệu HTML. Dưới đây là những phương thức quan trọng để thao tác với document.

document.createElement() – Tạo phần tử HTML mới

Mô tả:

  • Dùng để tạo một phần tử HTML mới, nhưng phần tử này chưa được thêm vào trang.

  • Cần sử dụng appendChild() hoặc insertBefore() để chèn nó vào DOM.

Cú pháp:

let element = document.createElement("tagName");

Ví dụ:
Tạo một thẻ <p> mới:

let newParagraph = document.createElement("p"); // Tạo thẻ <p>
newParagraph.innerHTML = "Đây là đoạn văn mới!"; // Thêm nội dung
document.body.appendChild(newParagraph); // Thêm vào cuối <body>

document.createTextNode() – Tạo nội dung văn bản

Mô tả:

  • Dùng để tạo một nút văn bản (text node), có thể chèn vào trong các phần tử HTML.

Cú pháp:

let textNode = document.createTextNode("Nội dung văn bản");

Ví dụ:
Tạo một đoạn văn mới bằng cách sử dụng createTextNode():

let newParagraph = document.createElement("p"); // Tạo thẻ <p>
let text = document.createTextNode("Đây là đoạn văn mới!"); // Tạo nội dung
newParagraph.appendChild(text); // Gắn nội dung vào <p>
document.body.appendChild(newParagraph); // Thêm vào trang

Khác biệt với innerHTML?

  • createTextNode() chỉ tạo văn bản thuần, không chứa thẻ HTML.

  • innerHTML có thể chứa cả thẻ HTML.

appendChild() & insertBefore() – Thêm phần tử vào DOM

appendChild() – Thêm vào cuối phần tử cha

  • Dùng để thêm phần tử vào cuối danh sách con của một phần tử cha.

  • Nếu phần tử đã tồn tại, nó sẽ bị di chuyển đến vị trí mới.

Cú pháp:

parentElement.appendChild(childElement);

Ví dụ:

let newDiv = document.createElement("div");
newDiv.innerHTML = "Tôi là một thẻ div mới!";
document.body.appendChild(newDiv);

insertBefore() – Chèn trước một phần tử con khác

  • Dùng để chèn một phần tử vào trước một phần tử con đã có trong DOM.

Cú pháp:

parentElement.insertBefore(newElement, referenceElement);

Ví dụ:
Chèn một <p> mới trước một <div> có sẵn:

let newParagraph = document.createElement("p");
newParagraph.innerHTML = "Đây là đoạn văn mới!";
let existingDiv = document.getElementById("content"); // Lấy thẻ div có id="content"
document.body.insertBefore(newParagraph, existingDiv); // Chèn vào trước <div>

So sánh appendChild()insertBefore()?

Phương thức Công dụng
appendChild() Thêm vào cuối phần tử cha
insertBefore() Chèn vào trước một phần tử con cụ thể

Chỉnh sửa nội dung phần tử

element.innerHTML – Thay đổi nội dung HTML

Mô tả:

  • Dùng để lấy hoặc thay đổi nội dung (bao gồm cả HTML) bên trong một phần tử.

Cú pháp:

element.innerHTML = "Nội dung mới";

Ví dụ:

document.getElementById("demo").innerHTML = "<b>Chữ in đậm</b>";

Lưu ý:

  • Nếu sử dụng innerHTML để thêm nội dung do người dùng nhập vào, cần kiểm tra tránh XSS (Cross-Site Scripting).

element.textContent – Thay đổi nội dung văn bản thuần

Mô tả:

  • Dùng để lấy hoặc thay đổi nội dung của phần tử dưới dạng văn bản thuần (không chứa HTML).

Cú pháp:

element.textContent = "Nội dung văn bản";

Ví dụ:

document.getElementById("demo").textContent = "<b>Không bị nhận diện là HTML</b>";

Kết quả hiển thị trên trang sẽ là:

<b>Không bị nhận diện là HTML</b>

Thay đổi thuộc tính phần tử

element.setAttribute() & element.getAttribute() – Thay đổi/Lấy giá trị thuộc tính

setAttribute(name, value) – Thay đổi thuộc tính

Cú pháp:

element.setAttribute("thuộc_tính", "giá_trị");

Ví dụ:

document.getElementById("myLink").setAttribute("href", "https://www.google.com");

getAttribute(name) – Lấy giá trị thuộc tính

Cú pháp:

let value = element.getAttribute("thuộc_tính");
Ví dụ:
let link = document.getElementById("myLink").getAttribute("href");
console.log(link); // Hiển thị URL của liên kết
Phương thức Chức năng
document.createElement() Tạo phần tử mới
document.createTextNode() Tạo nội dung văn bản thuần
appendChild() Thêm phần tử vào cuối cha
insertBefore() Chèn phần tử trước một phần tử khác
innerHTML Thay đổi nội dung (chứa HTML)
textContent Thay đổi nội dung (chỉ văn bản)
setAttribute() / getAttribute() Thay đổi / Lấy giá trị thuộc tính
classList.add() / classList.remove() Thêm / Xóa class

Sự kiện trong HTML DOM Document trong JavaScript

Trong JavaScript, sự kiện (event) là những hành động xảy ra trên trang web mà trình duyệt có thể nhận diện, như click chuột, nhập văn bản, tải trang, thay đổi kích thước cửa sổ, v.v.

Lập trình viên có thể bắt và xử lý sự kiện bằng cách sử dụng các phương thức của document và các thuộc tính sự kiện của phần tử.

document.addEventListener() – Lắng nghe sự kiện

Mô tả:

  • addEventListener() cho phép gán một hoặc nhiều sự kiện cho một phần tử mà không ghi đè lên các sự kiện khác.

  • Hỗ trợ nhiều trình xử lý sự kiện (event handler) cho cùng một sự kiện.

Cú pháp:

element.addEventListener("event", function);

Ví dụ:
Bắt sự kiện click trên một nút:

document.getElementById("myButton").addEventListener("click", function() {
    alert("Bạn đã bấm nút!");
});

Ưu điểm của addEventListener() so với thuộc tính sự kiện (onclick, onmouseover,...)

Phương pháp Ưu điểm
addEventListener() Cho phép gán nhiều sự kiện cho cùng một phần tử
onclick (trực tiếp) Chỉ gán được một sự kiện duy nhất, nếu gán lần nữa thì sự kiện trước bị ghi đè

Các sự kiện phổ biến trong JavaScript

Sự kiện chuột (onclick, onmouseover, onmouseout)

onclick – Khi người dùng bấm vào phần tử

Cú pháp:

element.onclick = function() { /* code */ };

Hoặc sử dụng addEventListener():

element.addEventListener("click", function() { /* code */ });

Ví dụ:

document.getElementById("btn").onclick = function() {
    alert("Bạn đã nhấn vào nút!");
};

onmouseover – Khi chuột di chuyển vào phần tử

Cú pháp:

element.onmouseover = function() { /* code */ };

hoặc

element.addEventListener("mouseover", function() { /* code */ });

Ví dụ:

document.getElementById("box").onmouseover = function() {
    this.style.backgroundColor = "yellow";
};

onmouseout – Khi chuột rời khỏi phần tử
Cú pháp:

element.onmouseout = function() { /* code */ };

Ví dụ:

document.getElementById("box").onmouseout = function() {
    this.style.backgroundColor = "white";
};

onclick: Xử lý khi bấm vào nút, liên kết, hình ảnh.

onmouseover/onmouseout: Tạo hiệu ứng hover, hiển thị tooltip.

Sự kiện bàn phím (onkeydown, onkeyup, onkeypress)

onkeydown – Khi một phím được nhấn xuống

Cú pháp:

element.onkeydown = function(event) { /* code */ };
Ví dụ:
document.addEventListener("keydown", function(event) { console.log("Bạn vừa nhấn phím: " + event.key); });

Ứng dụng:

  • Dùng để phát hiện phím nóng (Ctrl + S, Enter, Esc,...)

  • Tạo hiệu ứng khi nhập văn bản.

onkeyup – Khi một phím được thả ra

Cú pháp:

element.onkeyup = function(event) { /* code */ };
Ví dụ:
document.addEventListener("keyup", function(event) { console.log("Bạn vừa thả phím: " + event.key); });

Khác biệt giữa onkeydownonkeyup?

Sự kiện Khi nào kích hoạt?
onkeydown Khi phím được nhấn xuống
onkeyup Khi phím được thả ra

onkeypress – Khi một phím ký tự được nhấn xuống (ĐÃ BỊ LOẠI BỎ)

  • onkeypress hoạt động tương tự onkeydown, nhưng chỉ áp dụng với các ký tự có thể in ra màn hình (A-Z, 0-9, @, #,...).

  • Lưu ý: onkeypress đã bị loại bỏ trong các trình duyệt hiện đại, thay thế bằng onkeydown hoặc onkeyup.

Ứng dụng:

  • onkeydown: Bắt phím tắt (Ctrl + S, Arrow Left, Enter).

  • onkeyup: Kiểm tra dữ liệu nhập vào ô input.

Tương tác với Form và Input trong Document

HTML Form là một phần quan trọng của các trang web, cho phép người dùng nhập dữ liệu. JavaScript giúp chúng ta truy cập, kiểm tra và xử lý dữ liệu từ các trường nhập liệu trong biểu mẫu (input, textarea, select, radio, checkbox).

Truy cập giá trị của Input

Cách lấy giá trị của input bằng document.getElementById().value

Cú pháp:

document.getElementById("id_input").value;

Ví dụ: Lấy giá trị từ ô nhập liệu có id="name"

<input type="text" id="name" placeholder="Nhập tên">
<button onclick="showValue()">Lấy giá trị</button>
<p id="result"></p>

<script>
    function showValue() {
        let name = document.getElementById("name").value;
        document.getElementById("result").innerText = "Bạn đã nhập: " + name;
    }
</script>

Truy cập Form bằng document.forms

Cách sử dụng:

  • document.forms["form_name"] truy cập form theo name

  • document.forms[index] truy cập form theo vị trí (0,1,2...)

Ví dụ:

<form name="myForm">
    <input type="text" name="username" placeholder="Nhập username">
    <button onclick="getUsername()">Lấy Username</button>
</form>

<script>
    function getUsername() {
        let username = document.forms["myForm"]["username"].value;
        alert("Username là: " + username);
    }
</script>

Ưu điểm của document.forms: Có thể truy cập nhiều input trong cùng một form mà không cần id.

Xác thực dữ liệu Form (onchange, onsubmit)

Sự kiện onchange – Kiểm tra khi nhập liệu thay đổi

Cú pháp:

element.onchange = function() { /* kiểm tra dữ liệu */ };
Ví dụ: Kiểm tra nếu số nhập vào nhỏ hơn 18
<input type="number" id="age" onchange="validateAge()">
<p id="message"></p>

<script>
    function validateAge() {
        let age = document.getElementById("age").value;
        if (age < 18) {
            document.getElementById("message").innerText = "Bạn chưa đủ 18 tuổi!";
        } else {
            document.getElementById("message").innerText = "";
        }
    }
</script>

Sự kiện onsubmit – Xử lý khi form được gửi đi

Cú pháp:

document.getElementById("myForm").onsubmit = function(event) { event.preventDefault(); // Ngăn form gửi đi };

Ví dụ: Kiểm tra ô nhập có trống không trước khi gửi

<form id="myForm" onsubmit="return checkForm()">
    <input type="text" id="email" placeholder="Nhập email">
    <button type="submit">Gửi</button>
</form>
<p id="error"></p>

<script>
    function checkForm() {
        let email = document.getElementById("email").value;
        if (email.trim() === "") {
            document.getElementById("error").innerText = "Vui lòng nhập email!";
            return false; // Ngăn form gửi đi
        }
        return true;
    }
</script>

Ứng dụng thực tế của onsubmit:

  • Xác thực email, mật khẩu trước khi gửi dữ liệu.

  • Kiểm tra trường nhập có bị bỏ trống không.

Ví dụ thực tế với HTML DOM Document bằng JavaScript

Thay đổi nội dung trang web bằng JavaScript

Ví dụ: Nhấn nút để đổi màu và nội dung của một đoạn văn

<p id="text">Đây là nội dung ban đầu.</p>
<button onclick="changeContent()">Thay đổi nội dung</button>

<script>
    function changeContent() {
        let para = document.getElementById("text");
        para.innerText = "Nội dung đã thay đổi!";
        para.style.color = "red";
    }
</script>

Ứng dụng thực tế: Thay đổi nội dung trang web dựa trên hành động người dùng.

Tạo danh sách động từ dữ liệu nhập vào

Ví dụ: Nhập tên món ăn và thêm vào danh sách

<input type="text" id="food" placeholder="Nhập món ăn">
<button onclick="addFood()">Thêm</button>
<ul id="foodList"></ul>

<script>
    function addFood() {
        let food = document.getElementById("food").value;
        if (food.trim() !== "") {
            let li = document.createElement("li");
            li.textContent = food;
            document.getElementById("foodList").appendChild(li);
            document.getElementById("food").value = ""; // Xóa ô nhập sau khi thêm
        }
    }
</script>

Ứng dụng thực tế:

  • Tạo danh sách TODO, sản phẩm giỏ hàng, danh sách khách hàng,...

Hiển thị thông báo khi người dùng nhấn nút

Ví dụ: Hiển thị thông báo khi bấm vào nút

<button onclick="showAlert()">Nhấn vào đây</button>

<script>
    function showAlert() {
        alert("Xin chào! Bạn vừa nhấn vào nút.");
    }
</script>

Kết bài

HTML DOM Document là một công cụ mạnh mẽ giúp JavaScript có thể tương tác với trang web một cách linh hoạt. Thông qua các phương thức và thuộc tính của document, lập trình viên có thể truy cập, thay đổi nội dung, thêm hoặc xóa phần tử, xử lý sự kiện và thao tác với biểu mẫu một cách dễ dàng.

Việc hiểu và sử dụng thành thạo HTML DOM không chỉ giúp cải thiện trải nghiệm người dùng mà còn giúp bạn xây dựng các trang web động, tối ưu và hiệu quả hơn. Từ những thao tác cơ bản như thay đổi nội dung trang, tạo danh sách động, đến xác thực dữ liệu trong form, tất cả đều có thể được thực hiện thông qua DOM.

Hy vọng qua bài viết này, bạn đã nắm vững cách làm việc với HTML DOM Document trong JavaScript.

Bài viết liên quan