JavaScript HTML DOM 导航
- Halaman Sebelumnya Pemantau Acara DOM
- Halaman Berikutnya Nod DOM
Dengan HTML DOM, anda dapat menggunakan hubungan node untuk navigasi pohon node.
Nod DOM
Berdasarkan piawaian W3C HTML DOM, semua hal di dalam dokumen HTML adalah node:
- Semua dokumen adalah node dokumen
- Setiap elemen HTML adalah node elemen
- Teks di dalam elemen HTML adalah node teks
- Setiap properti HTML adalah node properti
- Semua komen adalah node komen

Dengan HTML DOM, semua node dalam pohon node boleh diakses melalui JavaScript.
Boleh membuat node baru, serta mengubah dan menghapus semua node.
Hubungan node
Node dalam pohon node mempunyai hubungan tingkat yang pasti.
- Terminologi (bapa, anak dan keluarga, parent, child serta sibling) digunakan untuk mendeskripsikan hubungan ini.
- Di dalam pohon node, node puncak disebut root (node root adalah node dasar)
- Setiap node mempunyai node bapa, kecuali root (node root tiada node bapa)
- Node boleh mempunyai jumlah anak yang pasti
- Keluarga (adik-beradik atau saudara) merujuk kepada node yang mempunyai bapa yang sama.
<html> <head> <title>Panduan DOM</title> </head> <body> <h1>Lesen DOM Pertama</h1> <p>Hello world!</p> </body> </html>

Dari HTML di atas, anda dapat baca maklumat berikut:
- <html> adalah node dasar
- <html> tiada bapa
- <html> adalah bapa <head> dan <body>
- <head> ialah anak pertama <html>
- <body> adalah anak terakhir <html>
Sama seperti:
- <head> mempunyai satu anak: <title>
- <title> mempunyai satu anak (node teks): "DOM Tutorial"
- <body> mempunyai dua anak: <h1> dan <p>
- <h1> mempunyai satu anak: "DOM pertama pelajaran"
- <p> mempunyai satu anak: "Hello world!"
- <h1> dan <p> adalah saudara
Navigasi antara node
Dengan JavaScript, anda dapat menggunakan properti node berikut untuk navigasi antara node:
- parentNode
- childNodes[nodenumber]
- firstChild
- lastChild
- nextSibling
- previousSibling
Anak node dan nilai node
Salah umum dalam penggunaan DOM adalah percaya bahwa node element mengandungi teks.
Contoh:
<title id="demo">DOM Tutorial</title>
(dalam contoh di atas)node element <title> Tidak termasukteks.
Ia mengandungi teks yang bernilai "DOM Tutorial"Node teks.
Nilai text node dapat melalui node innerHTML
Melalui properti
var myTitle = document.getElementById("demo").innerHTML;
Mengakses properti innerHTML setara dengan mengakses pertama anak nodenya nodeValue
:
var myTitle = document.getElementById("demo").firstChild.nodeValue;
Juga boleh demikian mengakses pertama anak nodenya:
var myTitle = document.getElementById("demo").childNodes[0].nodeValue;
Berikut tiga contoh untuk mengambil <h1>
Tekst elemen dan salin ke <p>
Elemen dalam:
Contoh 1
<html> <body> <h1 id="id01">Saya Laman Pertama</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; </script> </body> </html>
Contoh 2
<html> <body> <h1 id="id01">Saya Laman Pertama</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue; </script> </body> </html>
Contoh 3
<html> <body> <h1 id="id01">Saya Laman Pertama</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; </script> </body> </html>
InnerHTML
在本教程中,我们使用 innerHTML
取回 HTML 元素的内容。
不过,学习以上其他的方法有助于理解 DOM 的树结构和导航。
DOM 根节点
有两个特殊属性允许访问完整文档:
- document.body - 文档的 body
- document.documentElement - 完整文档
实例
<html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示 <b>document.body</b> 属性。</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html>
实例
<html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示 <b>document.documentElement</b> 属性。</p> </div> <script> alert(document.documentElement.innerHTML); </script> </body> </html>
nodeName 属性
nodeName
属性规定节点的名称。
- nodeName 是只读的
- 元素节点的 nodeName 等同于标签名
- 属性节点的 nodeName 是属性名称
- 文本节点的 nodeName 总是 #text
- 文档节点的 nodeName 总是 #document
实例
<h1 id="id01">我的第一张网页</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; </script>
注释:nodeName 总是包含 HTML 元素的大写标签名。
nodeValue 属性
nodeValue
属性规定节点的值。
- 元素节点的 nodeValue 是 undefined
- 文本节点的 nodeValue 是文本文本
- 属性节点的 nodeValue 是属性值
nodeType 属性
nodeType
属性返回节点的类型。nodeType
是只读的。
实例
<h1 id="id01">我的第一张网页</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script>
Properti nodeType yang paling penting adalah:
Nod | Jenis | Contoh |
---|---|---|
ELEMENT_NODE | 1 | <h1 class="heading">W3School</h1> |
ATTRIBUTE_NODE | 2 | class = "heading" (diabaikan) |
TEXT_NODE | 3 | W3School |
COMMENT_NODE | 8 | <!-- Ini adalah komen --> |
DOCUMENT_NODE | 9 | Dokumen HTML sendiri (<html> ibu) |
DOCUMENT_TYPE_NODE | 10 | <!Doctype html> |
Type 2 telah diabaikan dalam HTML DOM. XML DOM belum diabaikan.
- Halaman Sebelumnya Pemantau Acara DOM
- Halaman Berikutnya Nod DOM