يتكون تنفيذ JavaScript الكامل من الأجزاء الثلاثة المختلفة التالية:
Core (ECMAScript): الجزء الأساسي من اللغة، والذي يصف بناء الجملة والكائنات الأساسية للغة.
نموذج كائن المستند (DOM): معيار تشغيل مستند صفحة الويب، ويصف الطرق والواجهات لمعالجة محتوى صفحة الويب.
نموذج كائن المتصفح (BOM): أساس عمليات نافذة العميل والمتصفح، ويصف طرق وواجهات التفاعل مع المتصفح.
نموذج كائن المستند ( Document Object Model,简称DOM
) هو编程接口
قياسية موصى بها من قبل منظمة W3C لمعالجة لغة الترميز القابلة للتوسيع (HTML أو XML).
لقد حددت W3C سلسلة من واجهات DOM التي يمكن من خلالها تغيير محتوى صفحات الويب وبنيتها ونمطها.
اللغة الرسمية: نموذج كائن المستند (DOM) هو واجهة برمجة قياسية موصى بها من قبل منظمة W3C لمعالجة لغات الترميز القابلة للتوسيع. إنها واجهة برمجة تطبيقات (API) مستقلة عن النظام الأساسي واللغة يمكنها الوصول ديناميكيًا إلى البرامج والبرامج النصية وتحديث محتواها وبنيتها ونمط مستندات www (يتم تحديد مستندات HTML وXML من خلال أقسام الوصف). يمكن معالجة المستند بشكل أكبر ويمكن إضافة نتائج المعالجة إلى الصفحة الحالية. DOM عبارة عن مستند API قائم على الشجرة ويتطلب تمثيل المستند بأكمله في الذاكرة أثناء المعالجة. واجهة برمجة التطبيقات البسيطة الأخرى هي SAX المستندة إلى الأحداث، والتي يمكن استخدامها لمعالجة مستندات XML الكبيرة جدًا، نظرًا لكبر حجمها، فهي غير مناسبة لمعالجة كل شيء في الذاكرة.
DOM 把以上内容都看做是对象
DOM بشكل أساسي لتشغيل العناصر في التطوير الفعلي.
كيف نحصل على العناصر الموجودة في الصفحة يمكنك الحصول على العناصر الموجودة في الصفحة بالطرق التالية:
استخدم طريقة getElementById() للحصول على كائن العنصر بالمعرف.
document.getElementById('id');
استخدم console.dir() لطباعة كائن العنصر الذي حصلنا عليه ولعرض الخصائص والأساليب الموجودة في الكائن بشكل أفضل.
استخدم طريقة getElementsByTagName() لإرجاع مجموعة من الكائنات باسم العلامة المحدد.
document.getElementsByTagName('tag name');
ملاحظة:
؛ // إرجاع مجموعة كائنات العنصر وفقًا لاسم الفئة document.querySelector('selector'); المحدد المحدد كائن العنصر الأول document.querySelectorAll('selector'); // العودة وفقًا للمحدد المحدد
注意:
يجب وضع علامة على المحددات في querySelector وquerySelectorAll، على سبيل المثال: document.querySelector('#nav');
1. احصل على عنصر النص
doucumnet.body // قم بإرجاع كائن عنصر
النص 2. احصل على عنصر html
document.documentElement // قم بإرجاع كائن عنصر html
تمكن JavaScript لنا لإنشاء صفحات ديناميكية، والأحداث هي سلوكيات يمكن اكتشافها بواسطة JavaScript.简单理解: 触发--- 响应机制。
يمكن لكل عنصر في صفحة الويب إنشاء أحداث معينة يمكنها تشغيل JavaScript، على سبيل المثال، يمكننا إنشاء حدث عندما ينقر المستخدم على زر، ثم نقوم بتنفيذ عمليات معينة.
الحالة:
var btn = document.getElementById('btn'); بتن.ونكليك = وظيفة () { تنبيه ("كيف حالك")؛ };
注:以下图片的事件只是常见的并不代表所有
للأحداث:
1. مصدر الحدث (ما الذي تريد العمل عليه)
2. الحدث (ما تريد القيام به لتحقيق تأثير التفاعل المطلوب)
3. وظيفة المعالجة (كيف تريد أن يبدو الهدف بعد استمرار الحدث)
يمكن لعمليات JavaScript DOM تغيير محتوى صفحات الويب وبنيتها ونمطها. يمكننا استخدام عناصر تشغيل DOM لتغيير المحتوى والسمات وما إلى ذلك داخل العناصر. لاحظ أن ما يلي هو كل السمات
element.innerText
من موضع البداية إلى موضع النهاية، ولكنه يزيل علامة html وفي الوقت نفسه، ستؤدي المسافات وفواصل الأسطر أيضًا إلى إزالة
المحتوى بالكامل من البداية الموضع إلى الموضع النهائي لـ
element.innerHTML، بما في ذلك علامة html، مع الاحتفاظ بالمسافات وفواصل الأسطر
InternalText وInnerHTML لتغيير محتوى العنصر.
سرك، هريف
id، alt، title
يمكنك استخدام DOM لتشغيل سمات عناصر النموذج التالية:
النوع، القيمة، المحدد، المحدد، المعطل
يمكننا تعديل الحجم واللون والموضع والأنماط الأخرى العناصر من خلال JS.
注意:
1.JS 里面的样式采取驼峰命名法比如fontSize、 backgroundColor
2.JS 修改style 样式操作,产生的是行内样式,CSS 权重比较高
التشغيل هي المحتوى الأساسي لـ DOM.
إذا كانت هناك نفس مجموعة العناصر، ونريد أن ينفذ عنصر معين نمطًا معينًا، فنحن بحاجة إلى استخدام خوارزمية الحلقة الحصرية:
1. احصل على قيمة السمة
الفرق:
2. قم بتعيين قيمة الخاصية
الفرق:
element.Attribute
自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。
يتم الحصول على السمات المخصصة من خلال getAttribute('attribute').
ومع ذلك، يمكن أن تسبب بعض السمات المخصصة الغموض بسهولة، ومن الصعب تحديد ما إذا كانت سمات مضمنة أو سمات مخصصة للعنصر.
أضاف H5 سمات مخصصة جديدة إلينا:
1. تعيين سمات H5 المخصصة
ينص H5 على أنه يجب استخدام بداية بيانات السمة المخصصة كاسم للسمة وتعيين قيمة.
أو استخدم JS لتعيين
element.setAttribute('data-index', 2)
2. احصل على سمات H5 المخصصة <br/> التوافق احصل على element.getAttribute('data-index');
أضاف H5 element.dataset.index أو element.dataset['index']، وهو مدعوم فقط في IE 11.
عادة طريقتين للحصول على العناصر:
1. استخدم الطرق التي يوفرها DOM للحصول على العناصر
العلاقة الهرمية للعقدة للحصول على العناصر
لكلتا
الطريقتين الحصول على عقد العناصر، والتي سيتم استخدامها لاحقًا، ولكن عمليات العقدة أبسط
العقدة (التسمية، السمة، النص، التعليق، وما إلى ذلك). في DOM، استخدم العقدة لتمثيلها.
يمكن الوصول إلى جميع العقد في شجرة HTML DOM من خلال JavaScript، ويمكن تعديل أو إنشاء أو حذف جميع عناصر HTML (العقد).
بشكل عام، تحتوي العقد على ثلاث سمات أساسية على الأقل: نوع العقدة (نوع العقدة)، اسم العقدة (اسم العقدة)، قيمة العقدة (قيمة العقدة).
我们在实际开发中,节点操作主要操作的是元素节点
شجرة DOM لتقسيم العقد بالنسبة للعلاقات الهرمية المختلفة، والأكثر شيوعًا هو父子兄层级关系
1.
العقدة الأصلية
.parentNode
تتضمن عائدات.
ChildNodes (القياسية)
parentNode.childNodes مجموعة من العقد الفرعية للعقدة المحددة، وهي مجموعة يتم تحديثها على الفور.
ملاحظة: تحتوي القيمة المرجعة على جميع العقد الفرعية، بما في ذلك عقد العناصر، والعقد النصية، وما إلى ذلك.
إذا كنت تريد فقط الحصول على عقد العناصر بالداخل، فستحتاج إلى التعامل معها بشكل خاص. لذلك، لا نؤيد بشكل عام استخدام ChildNodes
var ul = document.querySelector('ul');for(var i = 0; i < ul.childNodes.length;i++) {if (ul.childNodes[i]. نوع العقدة == 1 ) { // ul.childNodes[i] هي عقدة العنصر console.log(ul.childNodes[i]);}}
- parentNode.children (غير قياسي)
parentNode.children هي خاصية للقراءة فقط تُرجع جميع عقد العناصر الفرعية. تقوم فقط بإرجاع عقد العناصر الفرعية، ولا يتم إرجاع العقد الأخرى (وهذا ما نركز عليه).
على الرغم من أن الأطفال غير قياسيين، إلا أنهم مدعومون من قبل متصفحات مختلفة، لذلك يمكننا استخدام
- parentNode.firstChild
firstChild بأمان لإرجاع العقدة الفرعية الأولى، أو فارغة إذا لم يتم العثور عليها. وبالمثل، يتم تضمين كافة العقد.
- parentNode.lastChild
lastChild يُرجع العقدة الفرعية الأخيرة، أو فارغة إذا لم يتم العثور عليها. وبالمثل، فإنه يحتوي أيضًا على جميع العقد
- parentNode.firstElementChild
firstElementChild يُرجع عقدة العنصر الفرعي الأولى، إذا لم يتم العثور عليها، يُرجع null.
- parentNode.lastElementChild
lastElementChild يُرجع آخر عقدة عنصر فرعي، أو فارغة إذا لم يتم العثور عليها.注意:这两个方法有兼容性问题,IE9 以上才支持
في التطوير الفعلي، تحتوي firstChild وlastChild على عقد أخرى، وهو أمر غير مناسب للعمل، كما أن firstElementChild وlastElementChild لديهما مشكلات في التوافق عقدة العنصر أو ماذا عن عقدة العنصر الفرعي الأخيرة؟
الحل:
parentNode.chilren[parentNode.chilren.length - 1]
نموذج كائن المستند
نموذج الكائن (DOM للاختصار) هو واجهة برمجة قياسية موصى بها من قبل منظمة W3C لمعالجة لغة الترميز القابلة للتوسيع (HTML أو XML).
لقد حددت W3C سلسلة من واجهات DOM التي يمكن من خلالها تغيير محتوى صفحات الويب وبنيتها ونمطها.
بالنسبة لجافا سكريبت، من أجل تمكين جافا سكريبت من تشغيل HTML، تمتلك جافا سكريبت مجموعتها الخاصة من واجهات برمجة DOM.
بالنسبة لـ HTML، يجعل DOM HTML من شجرة DOM.
عنصر DOM الذي يحتوي على المستندات والعناصر والعقد هو كائن، لذلك يُسمى نموذج كائن المستند
. فيما يتعلق بعمليات DOM، فإننا نركز بشكل أساسي على تشغيل العناصر. تتضمن بشكل أساسي الإنشاء والإضافة والحذف والتعديل والاستعلام وتشغيل السمة وتشغيل الحدث.