نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
JS

منهج JavaScript

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج JavaScript/تحديد عناصر الصفحة (Selecting DOM Elements)

تحديد عناصر الصفحة (Selecting DOM Elements)

querySelector javascriptgetElementByIdتحديد عناصر html بجافاسكريبتquerySelectorAllhtml collection nodelist

جدول مرجعي سريع

1
الدالةتُعيدحية؟
getElementById()عنصر واحد—
getElementsByClassName()HTMLCollectionنعم
querySelector()أول عنصر مطابق—
querySelectorAll()NodeListلا

الشرح

قبل تعديل أي عنصر في الصفحة، يجب أولاً "تحديده" أو "اختياره" من الـ DOM. توفر جافاسكريبت عدة دوال لذلك، وأبسطها getElementById() التي تُعيد عنصراً واحداً يطابق قيمة id محددة — وهي الأسرع أداءً لأن الـ id فريد دائماً في الصفحة.

getElementsByClassName() وgetElementsByTagName() تُعيدان مجموعة حية (HTMLCollection) من كل العناصر المطابقة لفئة CSS أو اسم وسم معين، وليس عنصراً واحداً. "حية" تعني أن هذه المجموعة تتحدث تلقائياً إذا أُضيفت أو حُذفت عناصر مطابقة من الصفحة لاحقاً.

الدالتان الأحدث والأكثر مرونة هما querySelector() وquerySelectorAll()، وتقبلان أي محدد CSS صالح (Selector) بالضبط كما تكتبه في ملف CSS — سواء id بـ #، أو class بـ .، أو وسم مباشرة، أو محددات معقدة تجمع أكثر من شرط. querySelector() تُعيد أول عنصر مطابق فقط، بينما querySelectorAll() تُعيد كل العناصر المطابقة كـ NodeList (وهي مجموعة ثابتة غير حية، بعكس HTMLCollection).

بسبب مرونتها الكبيرة وتوحيدها لصيغة CSS المألوفة، أصبحت querySelector وquerySelectorAll الخيار المفضل في الكود الحديث للتعامل مع تحديد العناصر، وتكاد تُغني تماماً عن الدوال القديمة الأخرى في معظم الحالات العملية.

الصياغة (Syntax)

syntax
1document.getElementById("myId");
2document.getElementsByClassName("myClass"); // HTMLCollection
3document.getElementsByTagName("p"); // HTMLCollection
4
5document.querySelector(".myClass"); // أول عنصر مطابق
6document.querySelectorAll("div.card"); // NodeList لكل المطابقين

أمثلة عملية

مثال 1: تحديد عناصر بطرق مختلفة

تحديد عناصر بطرق مختلفة
1<div id="header">
2 <p class="highlight">فقرة مهمة</p>
3 <p class="highlight">فقرة أخرى مهمة</p>
4</div>
5
6<script>
7 const رأس = document.getElementById("header");
8 const أول_فقرة = document.querySelector(".highlight");
9 const كل_الفقرات = document.querySelectorAll(".highlight");
10
11 console.log(كل_الفقرات.length); // 2
12 كل_الفقرات.forEach(ف => console.log(ف.textContent));
13</script>

مثال 2: محددات CSS معقدة مع querySelector

محددات CSS معقدة مع querySelector
1// querySelector يدعم محددات CSS معقدة
2const زر_داخل_نموذج = document.querySelector("form button[type=submit]");
3const كل_روابط_قائمة = document.querySelectorAll("nav ul li a");
4
5// NodeList (من querySelectorAll) تدعم forEach مباشرة
6كل_روابط_قائمة.forEach(رابط => {
7 console.log(رابط.href);
8});

نصائح احترافية

  • —getElementById هي الأسرع أداءً — استخدمها إن كنت تعرف الـ id مباشرة وتحتاج عنصراً واحداً فقط.
  • —querySelectorAll تُعيد NodeList تدعم forEach مباشرة، بينما HTMLCollection من getElementsByClassName لا تدعمها إلا بعد تحويلها لمصفوفة.
  • —HTMLCollection حية (تتحدث تلقائياً)، بينما NodeList من querySelectorAll ثابتة (لا تتحدث بعد الاختيار).
  • —favor querySelector/querySelectorAll في الكود الجديد لمرونتها ووضوح صيغة CSS المألوفة.

الدرس السابق

ما هو الـ DOM؟

الدرس التالي

تعديل محتوى الخصائص والتصميم (Modifying Elements & Styles)

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر