DOM là gì? Tìm hiểu và thao tác DOM trong Javascript

Phụ lục
dom-la-gi-tim-hieu-va-thao-tac-dom-trong-javascript

Với lập trình web, kiến thức về DOM và khả năng thao tác DOM là hai yếu tố quan trọng nhất. DOM cho bạn khả năng thay đổi mọi thứ của trang web, khi mà mọi nội dung đều có thể được thêm bớt xóa sửa để mang lại trải nghiệm và nội dung tốt nhất.

DOM là gì?

DOM là tên gọi viết tắt của (Document Object Model – tạm dịch Mô hình Các Đối tượng Tài liệu). Là một chuẩn được định nghĩa bởi W3C (Tổ Chức Web Toàn Cầu – World Wide Web Consortium). DOM được dùng để truy xuất và thao tác trên các tài liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình thông dụng như Javascript, PHP…

DOM là gì? Tìm hiểu và thao tác DOM trong Javascript

Trong mỗi thẻ HTML sẽ có những thuộc tính (Properties) và có phân cấp cha – con với các thẻ HTML khác. Sự phân cấp và các thuộc tính của thẻ HTML này ta gọi là selector và trong DOM sẽ có nhiệm vụ xử lý các vấn đề như đổi thuộc tính của thẻ, đổi cấu trúc HTML của thẻ.

Có thể thấy tất cả các thẻ HTML sẽ được quản lý trong đối tượng document. Thẻ cao nhất là thẻ html, tiếp theo là phân nhánh body và head. Bên trong head thì có những thẻ như styletitle,… và bên trong body thì là vô số các thẻ HTML khác. Như vậy trong Javascript, để thao tác với các thẻ HTML ta phải thông qua đối tượng document.

HTML DOM là gì?

HTML DOM giúp thao tác dữ liệu theo mô hình hướng đối tượng. Các phần tử bên trong 1 tài liệu có cấu trúc được định nghĩa thành các đối tượngphương thức và thuộc tính để có thể truy xuất dễ dàng mà vẫn đảm bảo tính cấu trúc.

Mỗi phần tử là một đối tượng, sở hữu các thuộc tính và các phương thức để làm việc với các thuộc tính đó như thêm, xóa, sửa, cập nhật. Bên cạnh đó, bạn cũng có thể thêm bớt các phần tử tùy thích, giúp cho nội dung và cấu trúc của trang web luôn cập nhật động. Nó định nghĩa sau đây:

  • HTML elements như là objects
  • properties của tất cả HTML elements
  • methods để truy cập đến tất cả HTML elements
  • events cho tất cả HTML elements

Cây cấu trúc DOM

Node

Đối với HTML DOM, mọi thành phần đều được xem là một node (nút), được biểu diễn trên 1 cây cấu trúc dạng cây gọi là DOM Tree. Các phần tử khác nhau sẽ được phân loại node khác nhau nhưng quan trọng nhất là 3 loại: node gốc (document node), node phần tử (element node), node văn bản (text node).

  • Node gốc: chính là tài liệu HTML, thường được biểu diễn bởi thẻ <html>.
  • Node phần tử: biểu diễn cho 1 phần tử HTML.
  • Node văn bản: mỗi đoạn kí tự trong tài liệu HTML, bên trong 1 thẻ HTML đều là 1 node văn bản. Đó có thể là tên trang web trong thẻ <title>, tên đề mục trong thẻ <h1>, hay một đoạn văn trong thẻ <p>.
  • Ngoài ra còn có node thuộc tính (attribute node) và node chú thích (comment node).

DOM là gì? Tìm hiểu và thao tác DOM trong Javascript

Quan hệ giữa các node

  • Node gốc (document) luôn là node đầu tiên.
  • Tất cả các node không phải là node gốc đều chỉ có 1 node cha (parent).
  • Một node có thể có một hoặc nhiều con, nhưng cũng có thể không có con nào.
  • Những node có cùng node cha được gọi là các node anh em (siblings).
  • Trong các node anh em, node đầu tiên được gọi là con cả (firstChild) và node cuối cùng là con út (lastChild).

DOM là gì? Tìm hiểu và thao tác DOM trong Javascript

Các loại DOM trong Javascript

Javascript cung cấp cho chúng ta nhiều loại DOM để xử lí HTML và CSS dễ dàng hơn.

  • DOM document: lưu trữ toàn bộ các thành phần trong documents của website.
  • DOM element: truy xuất tới thẻ HTML nào đó thông qua các thuộc tính như tên class, id, name của thẻ HTML.
  • DOM HTML: thay đổi giá trị nội dung và giá trị thuộc tính của các thẻ HTML.
  • DOM CSS: thay đổi các định dạng CSS của thẻ HTML.
  • DOM Event: gán các sự kiện như onclick()onload() vào các thẻ HTML.
  • DOM Listener: lắng nghe các sự kiện tác động lên thẻ HTML.
  • DOM Navigation dùng để quản lý, thao tác với các thẻ HTML, thể hiện mối quan hệ cha – con của các thẻ HTML
  • DOM Node, Nodelist: thao tác với HTML thông qua đối tượng (Object).

Thao tác với DOM

Mọi nội dung đều có thể được cập nhật động thông qua các thuộc tính và phương thức của DOM. Từ thay đổi định dạng chữ, nội dung chữ đến thay đổi cấu trúc các node và cả thêm node mới. Bạn cần hiểu rõ cách thao tác DOM và ý nghĩa của từng thuộc tính, phương thức.

Các Thuộc tính và Phương thức thường gặp

Thuộc tính:

  • id: Định danh – là duy nhất cho mỗi phần tử nên thường được dùng để truy xuất DOM trực tiếp và nhanh chóng.
  • className: Tên lớp – Cũng dùng để truy xuất trực tiếp như id, nhưng 1 className có thể dùng cho nhiều phần tử.
  • tagName: Tên thẻ HTML.
  • innerHTML: Trả về mã HTML bên trong phần tử hiện tại. Đoạn mã HTML này là chuỗi kí tự chứa tất cả phần tử bên trong, bao gồm các node phần tử và node văn bản.
  • outerHTML: Trả về mã HTML của phần tử hiện tại. Nói cách khác, outerHTML = tagName + innerHTML.
  • textContent: Trả về 1 chuỗi kí tự chứa nội dung của tất cả node văn bản bên trong phần tử hiện tại.
  • attributes: Tập các thuộc tính như id, name, class, href, title…
  • style: Tập các định dạng của phần tử hiện tại
  • value: Lấy giá trị của thành phần được chọn thành một biến.

Phương thức:

  • getElementById(id): Tham chiếu đến 1 node duy nhất có thuộc tính id giống với id cần tìm.
  • getElementsByTagName(tagname): Tham chiếu đến tất cả các node có thuộc tính tagName giống với tên thẻ cần tìm, hay hiểu đơn giản hơn là tìm tất cả các phần tử DOM mang thẻ HTML cùng loại. Nếu muốn truy xuất đến toàn bộ thẻ trong tài liệu HTML thì hãy sử dụng document.getElementsByTagName('*').
  • getElementsByName(name): Tham chiếu đến tất cả các node có thuộc tính name cần tìm.
  • getAttribute(attributeName): Lấy giá trị của thuộc tính.
  • setAttribute(attributeName, value): Sửa giá trị của thuộc tính.
  • appendChild(node): Thêm 1 node con vào node hiện tại.
  • removeChild(node): Xóa 1 node con khỏi node hiện tại.

Mặt khác, các phần tử DOM đều là các node trên cây cấu trúc DOM. Chúng sở hữu thêm các thuộc tính quan hệ để biểu diễn sự phụ thuộc giữa các node với nhau. Nhờ các thuộc tính quan hệ này, chúng ta có thể truy xuất DOM gián tiếp dựa trên quan hệ và vị trí của các phần tử:

Thuộc tính quan hệ:

  • parentNode: node cha
  • childNodes: Các node con
  • firstChild: node con đầu tiên
  • lastChild: node con cuối cùng
  • nextSibling: node anh em liền kề sau
  • previousSibling: node anh em liền kề trước

Bạn có thể xem danh sách đầy đủ ở W3SCHOOLS

Truy xuất các phần tử trong mô hình DOM

Chúng ta có thể truy xuất mọi phần tử html bằng cách sử dụng các phương thức :

  • document.getElementById()
  • document.getElementsByTagName()
  • document.getElementsByClass()


Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: quyenntt

    Link chia sẻ

    Bình luận

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    loi-502-bad-gateway-la-gi

    Lỗi 502 Bad Gateway là gì? Cách nhận biết và sửa lỗi nhanh nhất

    17:12 25/04/2025

    Khi truy cập website, bạn đôi khi gặp phải màn hình thông báo lỗi 502 Bad Gateway đầy khó chịu. Vậy lỗi 502 Bad Gateway là gì? Bài viết này sẽ cung cấp cho bạn thông tin đầy đủ về lỗi này cùng các phương pháp khắc phục hiệu quả, nhanh chóng nhất....

    Endpoint là gì? 7 nguyên tắc thiết kế Endpoint hoàn hảo

    16:53 25/04/2025

    Endpoint là gì và tại sao lại quan trọng trong phát triển phần mềm hiện đại? Bài viết từ Devwork sẽ giúp bạn hiểu rõ về khái niệm này, cách thiết kế endpoint hiệu quả và tránh những lỗi phổ biến khi làm việc với API. Cùng khám phá những nguyên tắc thiết kế endpoint giúp hệ thống của bạn vận hành mượt mà.

    endpoint-la-gi

    Mô hình OKRs là gì? Sự khác biệt giữa mô hình OKR và KPI

    16:41 25/04/2025

    Một trong những phương pháp quản lý mục tiêu hiệu quả nhất hiện nay chính là OKR. Vậy OKRs là gì? Mô hình OKR là gì? Và tại sao nó lại ngày càng phổ biến? Hãy cùng Devwork  tìm hiểu chi tiết trong bài viết này.

    mo-hinh-okrs-la-gi

    File XML là gì? Tìm hiểu tất tần tật về file XML từ A-Z

    10:04 25/04/2025

    File XML  là một ngôn ngữ đánh dấu linh hoạt, đã trở thành một phần không thể thiếu trong nhiều ứng dụng khác nhau. Vậy XML là gì? File XML là gì? File có đuôi xml là gì? Hãy cùng Devwork khám phá tất tần tật về XML trong bài viết này.

    file-xml-la-gi
    mang-cdn-la-gi

    Mạng CDN là gì? Hiểu đúng bản chất và cách hoạt động chi tiết

    16:56 24/04/2025

    Mạng CDN (Content Delivery Network) đóng vai trò then chốt trong việc tối ưu hóa hiệu suất website và ứng dụng trong thời đại số hiện nay. Bài viết này sẽ giúp bạn hiểu sâu về bản chất, cơ chế hoạt động và những lợi ích mà mạng CDN mang lại cho cá nhân và doanh nghiệp trong kỷ nguyên dữ liệu số.

    kubernetes-la-gi

    Kubernetes là gì? Cách hoạt động, thành phần và ứng dụng thực tế

    16:47 24/04/2025

    Kubernetes là gì và vì sao nó trở thành công nghệ không thể thiếu cho doanh nghiệp? Devwork hướng dẫn bạn khám phá nền tảng quản lý container mạnh mẽ này, giúp các doanh nghiệp tối ưu hóa quy trình vận hành và phát triển phần mềm hiệu quả trong môi trường đám mây.