شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


جافا سكريبت HTML DOM التنقل


باستخدام HTML DOM ، يمكنك التنقل في شجرة العقدة باستخدام علاقات العقد.


عقد DOM

وفقًا لمعيار W3C HTML DOM ، فإن كل شيء في مستند HTML عبارة عن عقدة:

  • المستند بأكمله عبارة عن عقدة مستند
  • كل عنصر HTML هو عقدة عنصر
  • النص الموجود داخل عناصر HTML عبارة عن عقد نصية
  • كل سمة من سمات HTML هي عقدة سمة (مهملة)
  • كل التعليقات هي تعليق العقد
DOM HTML tree

باستخدام HTML DOM ، يمكن الوصول إلى جميع العقد في شجرة العقدة بواسطة JavaScript.

يمكن إنشاء عقد جديدة ، ويمكن تعديل جميع العقد أو حذفها.


علاقات العقدة

العقد في شجرة العقد لها علاقة هرمية مع بعضها البعض.

تُستخدم مصطلحات الوالد والطفل والأخوة لوصف العلاقات.

  • في شجرة العقدة ، تسمى العقدة العلوية الجذر (أو العقدة الجذرية)
  • كل عقدة لها أصل واحد ، باستثناء الجذر (الذي ليس له أصل)
  • يمكن أن تحتوي العقدة على عدد من الأطفال
  • الأشقاء (الأخوة أو الأخوات) هم عقد مع نفس الوالد
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
شجرة العقدة

من HTML أعلاه يمكنك قراءة:

  • <html>هي عقدة الجذر
  • <html>ليس له أبوين
  • <html>هو والد <head>و<body>
  • <head>هو الطفل الأول من<html>
  • <body>هو آخر طفل من<html>

و:

  • <head>لديها طفل واحد:<title>
  • <title>لديه طفل واحد (عقدة نصية): "دروس DOM"
  • <body>وله طفلان: <h1>و<p>
  • <h1> لديه طفل واحد: "DOM الدرس الأول"
  • <p> لديها طفل واحد: "أهلاً بالعالم!"
  • <h1>وهم <p>أشقاء


التنقل بين العقد

يمكنك استخدام خصائص العقدة التالية للتنقل بين العقد باستخدام JavaScript:

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

العقد الفرعية وقيم العقدة

الخطأ الشائع في معالجة DOM هو توقع احتواء عقدة عنصر على نص.

مثال:

<title id="demo">DOM Tutorial</title>

عقدة العنصر <title>(في المثال أعلاه) لا تحتوي على نص.

يحتوي على عقدة نصية بالقيمة "DOM Tutorial".

يمكن الوصول إلى قيمة العقدة النصية بواسطة innerHTMLخاصية العقدة:

myTitle = document.getElementById("demo").innerHTML;

الوصول إلى خاصية innerHTML هو نفس الوصول إلى nodeValue الطفل الأول:

myTitle = document.getElementById("demo").firstChild.nodeValue;

يمكن أيضًا الوصول إلى الطفل الأول على النحو التالي:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

كل الأمثلة (3) التالية تسترجع نص <h1>عنصر وتنسخه في <p>عنصر:

مثال

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

مثال

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

مثال

<html>
<body>

<h1 id="id01">My First Page</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 - نص الوثيقة
  • document.documentElement - الوثيقة كاملة

مثال

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

مثال

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

خاصية nodeName

nodeNameتحدد الخاصية اسم العقدة .

  • nodeName للقراءة فقط
  • nodeName لعقدة عنصر هو نفس اسم العلامة
  • nodeName لعقدة السمة هو اسم السمة
  • nodeName للعقدة النصية هو دائمًا #text
  • nodeName لعقدة المستند هو دائمًا #document

مثال

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

ملاحظة: nodeName يحتوي دائمًا على اسم علامة الأحرف الكبيرة لعنصر HTML.


خاصية nodeValue

nodeValueتحدد الخاصية قيمة العقدة .

  • nodeValue لعقد العنصر هيnull
  • nodeValue لعقد النص هو النص نفسه
  • nodeValue لعقد السمات هي قيمة السمة

خاصية nodeType

nodeTypeالخاصية للقراءة فقط . تقوم بإرجاع نوع العقدة.

مثال

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

أهم خصائص nodeType هي:

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

تم إهمال النوع 2 في HTML DOM (ولكنه يعمل). لم يتم إهماله في XML DOM.