JavaScript HTML DOM định hướng
- Trang trước Chương trình giám sát sự kiện DOM
- Trang tiếp theo Nút DOM
Bằng cách sử dụng HTML DOM, bạn có thể sử dụng mối quan hệ nút để duyệt cây nút
Nút DOM
Theo tiêu chuẩn HTML DOM của W3C, tất cả mọi thứ trong tài liệu HTML đều là nút:
- Toàn bộ tài liệu là nút tài liệu
- Mỗi phần tử HTML là nút phần tử
- Text trong các phần tử HTML là nút văn bản
- Mỗi thuộc tính HTML là nút thuộc tính
- Tất cả các chú thích là nút chú thích

Với HTML DOM, tất cả các nút trong cây nút có thể được truy cập qua JavaScript
Có thể tạo mới nút, cũng như sửa đổi và xóa tất cả các nút
Mối quan hệ nút
Các nút trong cây nút có mối quan hệ cấp bậc nhất định
- Termin (cha, con và anh em, parent, child và sibling) được sử dụng để mô tả các mối quan hệ này
- Trong cây nút, nút đỉnh được gọi là gốc (nút gốc)
- Mỗi nút đều có nút cha, trừ nút gốc (nút gốc không có nút cha)
- Các nút có thể có một số lượng con nhất định
- Twin (em hoặc anh em) là các nút có cùng cha.
<html> <head> <title>Giáo trình DOM</title> </head> <body> <h1>Lesson đầu tiên về DOM</h1> <p>Hello world!</p> </body> </html>

Từ HTML trên, bạn có thể đọc được thông tin sau:
- HTML là nút gốc
- HTML không có cha
- HTML là cha của Head và Body
- Head là con đầu tiên của HTML
- <body> là nút con cuối cùng của <html>
Cùng lúc:
- <head> có một nút con: <title>
- <title> có một nút con (nút văn bản): "DOM Hướng dẫn"
- <body> có hai nút con: <h1> và <p>
- <h1> có một nút con: "DOM Lession 1"
- <p> có một nút con: "Hello world!"
- <h1> và <p> là anh em
Di chuyển giữa các nút
Bằng cách sử dụng JavaScript, bạn có thể sử dụng các thuộc tính nút sau để di chuyển giữa các nút:
- parentNode
- childNodes[nodenumber]
- firstChild
- lastChild
- nextSibling
- previousSibling
nút con và giá trị nút
Một lỗi phổ biến trong việc xử lý DOM là cho rằng phần tử chứa văn bản.
Ví dụ:
<title id="demo">DOM Hướng dẫn</title>
(trong ví dụ trên)nút phần tử <title> không chứavăn bản.
Nó chứa văn bản có giá trị "DOM Hướng dẫn" củaNút văn bản.
Giá trị của nút văn bản có thể được lấy thông qua giá trị của nút: innerHTML
thông qua thuộc tính:
var myTitle = document.getElementById("demo").innerHTML;
Truy cập vào thuộc tính innerHTML tương đương với truy cập vào nút con đầu tiên nodeValue
:
var myTitle = document.getElementById("demo").firstChild.nodeValue;
Cũng có thể truy cập vào nút con đầu tiên như sau:
var myTitle = document.getElementById("demo").childNodes[0].nodeValue;
Dưới đây là ba ví dụ để lấy lại <h1>
元素的文本 và sao chép vào <p>
Trong phần tử:
Mẫu 1
<html> <body> <h1 id="id01">Đầu tiên trang của tôi</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; </script> </body> </html>
Mẫu 2
<html> <body> <h1 id="id01">Đầu tiên trang của tôi</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue; </script> </body> </html>
Mẫu 3
<html> <body> <h1 id="id01">Đầu tiên trang của tôi</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; </script> </body> </html>
InnerHTML
Trong hướng dẫn này, chúng ta sử dụng innerHTML
Lấy lại nội dung của phần tử HTML.
Nhưng, học các phương pháp khác trên giúp hiểu cấu trúc cây và định hướng của DOM.
Nút gốc DOM
Có hai thuộc tính đặc biệt cho phép truy cập toàn bộ tài liệu:
- document.body - Thân của tài liệu
- document.documentElement - Toàn bộ tài liệu
thực例
<html> <body> <p>Hello World!</p> <div> <p>DOM rất hữu ích!</p> <p> Ví dụ này minh họa thuộc tính <b>document.body</b> .</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html>
thực例
<html> <body> <p>Hello World!</p> <div> <p>DOM rất hữu ích!</p> <p> Ví dụ này minh họa thuộc tính <b>document.documentElement</b> .</p> </div> <script> alert(document.documentElement.innerHTML); </script> </body> </html>
Thuộc tính nodeName
nodeName
Thuộc tính xác định tên của phần tử.
- Tên của thuộc tính là chỉ đọc
- Tên của phần tử là tên thẻ
- Tên của thuộc tính là tên của thuộc tính
- Tên của phần tử văn bản luôn là #text
- Tên của phần tử tài liệu luôn là #document
thực例
<h1 id="id01">Trang web đầu tiên của tôi</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; </script>
Chú ý:nodeName luôn chứa tên thẻ lớn của phần tử HTML.
Thuộc tính nodeValue
nodeValue
Thuộc tính xác định giá trị của phần tử.
- giá trị của thuộc tính nodeValue của phần tử là undefined
- giá trị của thuộc tính nodeValue là văn bản
- giá trị của thuộc tính nodeValue là giá trị của thuộc tính
Thuộc tính nodeType
Thuộc tính
trả về loại của phần tử.Thuộc tính
là chỉ đọc.
thực例
<h1 id="id01">Trang web đầu tiên của tôi</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script>
Tính chất nodeType quan trọng nhất là:
Nút | Loại | Ví dụ |
---|---|---|
ELEMENT_NODE | 1 | <h1 class="heading">W3School</h1> |
ATTRIBUTE_NODE | 2 | class = "heading" (đã bị hủy) |
TEXT_NODE | 3 | W3School |
COMMENT_NODE | 8 | <!-- Đây là ghi chú --> |
DOCUMENT_NODE | 9 | Tài liệu HTML本身 (<html> của cha) |
DOCUMENT_TYPE_NODE | 10 | <!Doctype html> |
Type 2 đã bị hủy trong HTML DOM. Chưa bị hủy trong XML DOM.
- Trang trước Chương trình giám sát sự kiện DOM
- Trang tiếp theo Nút DOM