JavaScript HTML DOM 导航
- الصفحة السابقة مستمع أحداث DOM
- الصفحة التالية عقد DOM
من خلال HTML DOM، يمكنك استخدام علاقات العقد للتنقل في شجرة العقد.
عقد DOM
وفقًا لمواصفات W3C HTML DOM، كل شيء في مستند HTML هو عقد:
- كل مستند كامل هو عقد مستند
- كل عنصر HTML هو عقد عنصر
- النص داخل العنصر HTML هو عقد نص
- كل خاصية HTML هي عقد خاصية
- كل التعليقات هي عقد تعليق

مع HTML DOM، يمكن الوصول إلى جميع العقد في شجرة العقد باستخدام JavaScript.
يمكن إنشاء عقد جديدة، ويمكن تعديل وإزالة جميع العقد.
علاقات العقد
العقد في شجرة العقد لديهم علاقات هرمية مع بعضهم البعض.
- المصطلحات (الأب، الابن، الشقيق، parent، child، sibling) تستخدم لوصف هذه العلاقات.
- في شجرة العقد، يُسمى العقد الأعلى بالجذر (العقد الجذر ليس له أب).
- كل عقد له عقد أب، باستثناء الجذر (لا يوجد أب للعقد الجذر).
- يمكن للعقد امتلاك عدد معين من الأبناء
- الشقيق (الأخ أو الأخت) هو العقد الذي يمتلك نفس الأب.
<html> <head> <title>دليل DOM</title> </head> <body> <h1>درس الأول في DOM</h1> <p>مرحبًا بالعالم!</p> </body> </html>

من خلال HTML المذكور أعلاه، يمكنك قراءة المعلومات التالية:
- <html> هو العقد الجذر
- <html> ليس له أب
- <html> هو الأب لـ <head> و <body>
- <head> هو أول ابن <html>
- <body> هو الأبناء الأخيرين لـ <html>
في نفس الوقت:
- <head> لديه ابن واحد: <title>
- <title> لديه ابن واحد (عقدة نصية): "دليل DOM"
- <body> لديه ابناين: <h1> و <p>
- <h1> لديه ابن واحد: "DOM الدرس الأول"
- <p> لديه ابن واحد: "Hello world!"
- <h1> و <p> هم إخوة
التنقل بين العقد
من خلال JavaScript، يمكنك استخدام الخاصيات العقدية التالية للتنقل بين العقد
- parentNode
- childNodes[nodenumber]
- firstChild
- lastChild
- nextSibling
- previousSibling
العقدة الأصلية والقيمة العقدية
واحدة من الأخطاء الشائعة في معالجة DOM هي الاعتقاد بأن العقدة العنصرية تحتوي على نص.
مثال:
<title id="demo">دليل DOM</title>
على العقدة العنصرية <title> (في المثال السابق) لا يحتويالنص.
إنه يحتوي على نص "دليل DOM".عقدة النص.
يمكن الحصول على قيمة العقدة النصية من خلال العقدة innerHTML
الخصائص للوصول إليها:
var myTitle = document.getElementById("demo").innerHTML;
زيارة خصائص innerHTML تساوي زيارة العقدة الأصلية الأولى nodeValue
:
var myTitle = document.getElementById("demo").firstChild.nodeValue;
يمكنك أيضًا زيارة أولى العقدة الأصلية كما يلي:
var myTitle = document.getElementById("demo").childNodes[0].nodeValue;
فيما يلي ثلاثة أمثلة لاسترجاع <h1>
النص العنصرية وإلى <p>
في العنصر:
مثال 1
<html> <body> <h1 id="id01">مجلة اولى صفحتي</h1> <p id="id02">مرحبا!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; </script> </body> </html>
مثال 2
<html> <body> <h1 id="id01">مجلة اولى صفحتي</h1> <p id="id02">مرحبا!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue; </script> </body> </html>
مثال 3
<html> <body> <h1 id="id01">مجلة اولى صفحتي</h1> <p id="id02">مرحبا!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; </script> </body> </html>
InnerHTML
في هذا الدرس، نستخدم innerHTML
استرجاع محتوى العنصر HTML.
على الرغم من ذلك، تعلم الطرق الأخرى المذكورة يساعد في فهم بنية شجرة DOM والتنقل.
root node للDOM
هناك خاصيتان خاصتان تسمحان بالوصول إلى الوثيقة الكاملة:
- document.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>
property nodeName
nodeName
property يحدد اسم العنصر.
- property nodeName هو فقط قراءة
- nodeName للعنصر هو اسم العنصر
- nodeName للخاصية هو اسم الخاصية
- nodeName للنص دائمًا #text
- nodeName للعنصر الوثيقة دائمًا #document
مثال
<h1 id="id01">موقعي الأول</h1> <p id="id02">مرحبا!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; </script>
ملاحظة:nodeName يحتوي دائمًا على اسم العنصر الكبير بالحروف الكبيرة.
property nodeValue
nodeValue
property يحدد قيمة العنصر.
- property nodeValue هو undefined للعنصر
- property nodeValue هو النص النصي
- property nodeValue هو قيمة الخاصية
property nodeType
property
يعود نوع العنصر.property
هو فقط قراءة.
مثال
<h1 id="id01">موقعي الأول</h1> <p id="id02">مرحبا!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script>
أهم خاصية nodeType هي:
عقد | نوع | مثال |
---|---|---|
ELEMENT_NODE | 1 | <h1 class="heading">W3School</h1> |
ATTRIBUTE_NODE | 2 | class = "heading" (مستأنف) |
TEXT_NODE | 3 | W3School |
COMMENT_NODE | 8 | <!-- هذه تعليقات --> |
DOCUMENT_NODE | 9 | مستند HTML نفسه (أب <html>) |
DOCUMENT_TYPE_NODE | 10 | <!DOCTYPE html> |
نوع 2 تم التخلي عنه في HTML DOM. لم يتم التخلي عنه في XML DOM.
- الصفحة السابقة مستمع أحداث DOM
- الصفحة التالية عقد DOM