JavaScript DOM
JavaScript DOM
مقدمة
يعد نموذج كائن المستند (Document Object Model أو DOM) واجهة برمجية لتفاعل مع محتوى وهيكل مستندات الويب (عادةً HTML أو XML). إنه يمثل المستند كشجرة من الكائنات، حيث يمثل كل كائن جزءًا من المستند، مثل العناصر والسمات والنصوص. يسمح DOM لـ JavaScript بالوصول إلى هذه الكائنات والتلاعب بها، مما يتيح إنشاء صفحات ويب ديناميكية وتفاعلية. فهم DOM ضروري لأي مطور ويب يسعى إلى إنشاء تطبيقات ويب متقدمة. هذا المقال موجه للمبتدئين ويهدف إلى توفير فهم شامل لـ DOM وكيفية استخدامه في JavaScript.
ما هو DOM؟
كما ذكرنا سابقًا، يمثل DOM المستند كشجرة. تخيل مستند HTML كشجرة عائلة، حيث يكون العنصر `<html>` هو الجد، والعناصر `<head>` و `<body>` هما الأبناء، وهكذا. كل عنصر (مثل `
` أو `
- المستند (Document): يمثل المستند بأكمله. هو الجذر الرئيسي لشجرة DOM.
- العناصر (Elements): تمثل عناصر HTML، مثل `
`، `
`، ``.
- السمات (Attributes): تمثل السمات الخاصة بالعناصر، مثل `id`، `class`، `src`.
- النصوص (Text): تمثل النص الموجود داخل العناصر.
- التعليقات (Comments): تمثل التعليقات في مستند HTML.
الوصول إلى عناصر DOM
هناك عدة طرق للوصول إلى عناصر DOM باستخدام JavaScript:
- `document.getElementById(id)`: هذه الطريقة هي الأسرع والأكثر شيوعًا للوصول إلى عنصر بناءً على قيمة سمة `id` الخاصة به. تذكر أن قيم `id` يجب أن تكون فريدة في المستند.
- `document.getElementsByClassName(className)`: تُرجع هذه الطريقة مجموعة من جميع العناصر التي لها الفئة (class) المحددة. ترجع HTMLCollection (تشبه المصفوفة ولكنها ديناميكية).
- `document.getElementsByTagName(tagName)`: تُرجع هذه الطريقة مجموعة من جميع العناصر التي لها اسم العلامة (tag name) المحدد. ترجع HTMLCollection.
- `document.querySelector(selector)`: تُرجع هذه الطريقة العنصر الأول الذي يطابق محدد CSS المحدد. تعتبر أكثر مرونة من الطرق السابقة.
- `document.querySelectorAll(selector)`: تُرجع هذه الطريقة مجموعة من جميع العناصر التي تطابق محدد CSS المحدد. ترجع NodeList (تشبه المصفوفة ولكنها ثابتة).
مثال:
```javascript // الحصول على العنصر الذي له id يساوي "myParagraph" var paragraph = document.getElementById("myParagraph");
// الحصول على جميع العناصر التي لها class تساوي "highlight" var highlightedElements = document.getElementsByClassName("highlight");
// الحصول على جميع عناصر الفقرات () var paragraphs = document.getElementsByTagName("p"); // الحصول على العنصر الأول الذي له class تساوي "special" var specialElement = document.querySelector(".special"); // الحصول على جميع العناصر التي لها class تساوي "item" var items = document.querySelectorAll(".item"); ``` التلاعب بعناصر DOM بمجرد الوصول إلى عناصر DOM، يمكنك التلاعب بها بعدة طرق:
- تغيير المحتوى:
- تغيير السمات:
- تغيير الأنماط (CSS):
- إضافة وإزالة العناصر:
- إنشاء عقد نصية:
- `click`: يحدث عند النقر على عنصر.
- `mouseover`: يحدث عندما يتحرك مؤشر الماوس فوق عنصر.
- `mouseout`: يحدث عندما يتحرك مؤشر الماوس خارج عنصر.
- `keydown`: يحدث عند الضغط على مفتاح.
- `keyup`: يحدث عند رفع إصبع عن مفتاح.
- `load`: يحدث عند تحميل الصفحة بالكامل.
- `submit`: يحدث عند إرسال نموذج (form).
- `document.body`: يشير إلى عنصر `<body>` في المستند.
- `element.parentNode`: يشير إلى العنصر الأب للعنصر الحالي.
- `element.childNodes`: ترجع قائمة بجميع العناصر الأبناء للعنصر الحالي.
- `element.firstChild`: ترجع أول عنصر ابن للعنصر الحالي.
- `element.lastChild`: ترجع آخر عنصر ابن للعنصر الحالي.
- `element.nextSibling`: ترجع العنصر الشقيق التالي للعنصر الحالي.
- `element.previousSibling`: ترجع العنصر الشقيق السابق للعنصر الحالي.
- تقليل الوصول إلى DOM: حاول تقليل عدد مرات الوصول إلى DOM. قم بتخزين مراجع للعناصر التي تستخدمها بشكل متكرر.
- استخدام `documentFragment`: إذا كنت بحاجة إلى إضافة العديد من العناصر إلى DOM، فاستخدم `documentFragment` لإنشاء مجموعة من العناصر في الذاكرة ثم إضافتها مرة واحدة إلى DOM.
- تجنب إعادة تدفق (reflow) وإعادة رسم (repaint): تغيير DOM يمكن أن يؤدي إلى إعادة تدفق وإعادة رسم، وهما عمليتان مكثفتان. حاول تجميع التغييرات معًا وتقليل عدد مرات حدوثهما.
- تحديث أسعار الخيارات الثنائية: يمكن استخدام DOM لتحديث أسعار الخيارات الثنائية في الوقت الفعلي دون إعادة تحميل الصفحة.
- عرض الرسوم البيانية: يمكن استخدام DOM لإنشاء وعرض الرسوم البيانية التي توضح أداء الخيارات الثنائية.
- تفاعل المستخدم: يمكن استخدام DOM لإنشاء واجهات مستخدم تفاعلية تتيح للمستخدمين تقديم الصفقات وإدارة حساباتهم.
- JavaScript
- HTML
- CSS
- JSON
- AJAX
- jQuery (مكتبة JavaScript تسهل التفاعل مع DOM)
- React (إطار عمل JavaScript لبناء واجهات المستخدم)
- Angular (إطار عمل JavaScript لبناء واجهات المستخدم)
- Vue.js (إطار عمل JavaScript تدريجي لبناء واجهات المستخدم)
- Node.js (بيئة تشغيل JavaScript من جانب الخادم)
- استراتيجية مارتينجال
- استراتيجية المتوسط المتحرك
- استراتيجية بولينجر باندز
- تحليل الشموع اليابانية
- مؤشر القوة النسبية (RSI)
- مؤشر الماكد (MACD)
- تحليل حجم التداول
- استراتيجية الاختراق
- استراتيجية الارتداد
- استراتيجية 60 ثانية
- تحليل الاتجاه
- التحليل الأساسي للخيارات الثنائية
- إدارة المخاطر في الخيارات الثنائية
- التحليل الفني المتقدم
- التحليل العشوائي
- استراتيجية بينالي
- استراتيجية ستراجل
- استراتيجية التداول المتأرجح
- استراتيجية التداول اليومي
- استراتيجية التداول طويل الأجل
- استراتيجية التداول بناءً على الأخبار
- استراتيجية التداول بناءً على الأحداث الاقتصادية
- استراتيجية التداول بناءً على الموسمية
- استراتيجية التداول بناءً على التلاعب بالسوق
- استراتيجية التداول بناءً على أنماط الرسوم البيانية
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين