Skip to content

JavaScript HTML DOM navigatsiyasi

HTML DOM yordamida siz tugunlar orasidagi munosabatlardan foydalanib tugunlar daraxti bo'ylab harakatlanishingiz mumkin.


DOM tugunlari (Nodes)

W3C HTML DOM standartiga ko'ra, HTML hujjatidagi hamma narsa tugundir:

  • Butun hujjat — document node (hujjat tuguni)
  • Har bir HTML elementi — element node (element tuguni)
  • HTML elementlari ichidagi matnlar — text nodes (matn tugunlari)
  • Har bir HTML atributi — attribute node (atribut tuguni)
  • Barcha izohlar — comment nodes (izoh tugunlari)

HTML DOM bilan barcha tugunlarga JavaScript orqali kirish mumkin. Yangi tugunlar yaratish, mavjudlarini o'zgartirish yoki o'chirish mumkin.


Tugunlar orasidagi munosabatlar

Tugunlar daraxtidagi tugunlar bir-biri bilan iyerarxik bog'liqlikka ega. Munosabatlarni tasvirlash uchun parent (ota), child (farzand) va sibling (aka-uka/opa-singil) atamalari ishlatiladi.

  • Tugunlar daraxtida eng yuqori tugun root (ildiz) deb ataladi.
  • Har bir tugunning aniq bitta otasi bor, ildizdan tashqari (uning otasi yo'q).
  • Tugun bir nechta farzandga ega bo'lishi mumkin.
  • Aka-ukalar (siblings) — bitta otaga ega bo'lgan tugunlardir.

HTML misoli:

js
<html>
  <head>
    <title>DOM darsi</title>
  </head>
  <body>
    <h1>DOM Birinchi dars</h1>
    <p>Salom Dunyo!</p>
  </body>
</html>

Yuqoridagi HTML-dan quyidagilarni o'qish mumkin:

  • <html> — ildiz tuguni (root). Uning otasi yo'q.
  • <html><head> va <body> ning otasi.
  • <head><html> ning birinchi farzandi.
  • <body><html> ning oxirgi farzandi.

Va yana:

  • <head> ning bitta farzandi bor: <title>.
  • <title> ning bitta farzandi bor (matn tuguni): "DOM darsi".
  • <body> ning ikkita farzandi bor: <h1> va <p>.
  • <h1> va <p> — aka-ukalar (siblings).

Tugunlar orasida harakatlanish

JavaScript yordamida tugunlar orasida harakatlanish uchun quyidagi xususiyatlardan foydalanishingiz mumkin:

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Farzand tugunlar va tugun qiymatlari

Muhim eslatma

DOM bilan ishlashda eng ko'p uchraydigan xato — element tugunining o'zida matn bor deb o'ylashdir.

Misol: <title id="demo">DOM darsi</title>

Bu yerda <title> elementi matnni o'z ichiga olmaydi. U qiymati "DOM darsi" bo'lgan matn tugunini (text node) o'z ichiga oladi.

Matn tugunining qiymatiga elementning innerHTML xususiyati orqali kirish mumkin:

js
let x = document.getElementById('demo').innerHTML

innerHTML ga murojaat qilish birinchi farzandning nodeValue xususiyatiga murojaat qilish bilan bir xil:

js
let x = document.getElementById('demo').firstChild.nodeValue

Yoki childNodes orqali:

js
let x = document.getElementById('demo').childNodes[0].nodeValue

DOM ildiz tugunlari (Root Nodes)

To'liq hujjatga kirish imkonini beruvchi ikkita maxsus xususiyat mavjud:

  • document.body — hujjatning tanasi (body qismi).
  • document.documentElement — butun hujjat (to'liq HTML).

nodeName xususiyati

nodeName xususiyati tugun nomini belgilaydi.

  • nodeName faqat o'qish uchun (read-only).
  • Element tugunining nodeName qiymati teg nomi bilan bir xil (har doim katta harflarda).
  • Atribut tugunining nodeName qiymati atribut nomi bilan bir xil.
  • Matn tugunining nodeName qiymati har doim #text.
  • Hujjat tugunining nodeName qiymati har doim #document.

nodeValue xususiyati

nodeValue xususiyati tugun qiymatini belgilaydi.

  • Element tugunlari uchun nodeValue qiymati null.
  • Matn tugunlari uchun nodeValue matnning o'zi.
  • Atribut tugunlari uchun nodeValue atribut qiymati.

nodeType xususiyati

nodeType xususiyati tugun turini qaytaradi (faqat o'qish uchun).

Eng muhim nodeType qiymatlari:

Tugun turiQiymatMisol
ELEMENT_NODE1<h1>
ATTRIBUTE_NODE2class="heading" (eskirgan)
TEXT_NODE3Matn
COMMENT_NODE8<!-- izoh -->
DOCUMENT_NODE9Hujjatning o'zi
DOCUMENT_TYPE_NODE10<!DOCTYPE html>