Quy định của DOM :
1-Trong bản HTML và XML chỗ nào có tag đều được gọi là node.
html,head,,body,p,div,ul,li,comment ở trong tag,script : Tất cả đều được gọi bằng một tên chung là node.
2-Đối với html thì head được gọi là firstChild , body được gọi là lastChild.
3-Đối với body thì script là lastChild.Tag nào viết trước tiên trong body thì đó là firstChild.
Vì trong body có nhiều tags nghĩa là có nhiều nodes nên DOM gọi tất cả các children trong đó bằng một tên chung childNodes[…]
Gọi là firstChild vì được đếm đầu tiên và vì theo qui định JavaScript nên phải mang số zero chứ không mang số 1.Vậy firstChild nếu viết theo node thì phải viết như thế nầy : childNodes[0]
Phía trên là một bảng HTML căn bản và đơn giản gồm có đủ các tags.Chúng ta áp dụng nodeName của DOM để tìm tên của các tags đó,nghĩa là tìm tên của html tag names mà DOM gọi chung một tên là childNodes[…]
Trước khi khởi sự dùng nodeName để tìm tên của các tags ,chúng ta cần phải biết chỗ khởi hành là đâu.DOM qui định có hai chỗ để khởi hành.
Chỗ thứ nhứt là topmost HTML.Nếu muốn khởi hành ở đây thì dùng ký hiệu
document.documentElement.childNodes[…].nodeName
Chỗ thứ nhì là body.Nếu muốn khởi hành ở đây thì dùng ký hiệu :
document.body.childNodes[…].nodeName
Trong bảng html ở đầu trang,chúng ta khởi hành từ body để áp dụng nodeName
Nếu viết childNodes[0] , sẽ hiện ra chữ p.Nhìn trên bảng html thấy rất đúng.
Nếu viết childNodes[1] , sẽ hiện ra chữ DIV.Rất đúng.
Nếu viết childNodes[2] , sẽ hiện ra chữ UL.Rất đúng.
Nếu viết childNodes[3] , sẽ hịên ra chữ #comment.Rất đúng.
Nếu viết childNodes[4] , sẽ hiện ra chữ SCRIPT. Rất đúng.
Nếu viết alert(document.body.childNodes[1].nextSibling.nodeName) ; sẽ có output
là UL.Rất đúng.
Nếu viết alert(document.body.childNodes[0].previousSibling.nodeName); sẽ có output là
P.Rất đúng.
Trong script tags trên thì viết lại như thế nầy :
1- alert(bullet1.nodeName); sẽ hiện ra output là LI . Rất đúng
2- alert(bullet1.firstChild.nodeName) sẽ có output là #text . Nghĩa là child của bullet1 là câu “VN yêu dấu.” Rất đúng.
3- Muốn biết sibling của bullet1 có phải là li không thì viết như sau :
alert(bullet1.nextSibling.nodeName); Sẽ có output là LI .Rất đúng vì rõ ràng sibling của bullet1 chính là bullet2.
4-Muốn biết sibling của bullet1 có firstChild hay lastChild không thì viết :
alert(bullet1.nextSibling.firstChild.nodeName) ; Sẽ có output là #text .Rất đúng vì bullet2 có firstChild là câu “Khắp Năm Châu.”