انتقل إلى محتوى الدرس
الدرس 59
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

إدارة الفئات عبر classList في JavaScriptJavaScript DOM classList طريقة إضافة الفئات classList add، وحذف الفئات classList remove، وعكس الفئة classList toggle

تحكم بفئات CSS بنظافة في JavaScript عبر كائن classList باستخدام دوال add وremove والعكس المشروط toggle والفحص الدقيق contains والاستبدال الذري replace.
أقسام الدرس
6
الأمثلة
2
اللغة
العربية
المشاهدات
3,728
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

إن كتابة عشرات أسطر التنسيق المباشر عبر el.style يخلط التصميم بالمنطق البرمجي ويعطل توافق الوضع الداكن والشاشات المتجاوبة. لذا تكمن الممارسة الاحترافية في تعريف الفئات داخل ملف CSS ثم التبديل بينها بنظافة عبر الكائن المدمج el.classList!

مخطط دوال إدارة فئات التنسيق في classList: الإضافة والحذف والعكس والفحص والاستبدال

بخلاف الكتابة فوق السلسلة el.className = "active" التي تمسح بقية فئات العنصر بالخطأ، تضيف الدالة el.classList.add("active", "highlighted") فئة أو عدة فئات بأمان وتتجاهل التكرار تلقائياً إن كانت موجودة مسبقاً:

صيغة الدالةالوظيفة المنفذةالقيمة المرجعة
classList.add("a", "b")تضيف فئة أو أكثر دون تكرار أو مسح لسواهاundefined
classList.remove("a", "b")تسحب الفئات المحددة بهدوءundefined
classList.toggle("open", force?)تعكس وجود الفئة أو تفرض حالة منطقيةقيمة منطقية لوجود الفئة بعدها
classList.contains("open")تختبر امتلاك العنصر للفئة حالياًtrue أو false
classList.replace("old", "new")تستبدل الفئة القديمة بالجديدة بخطوة واحدةtrue عند نجاح الاستبدال

تسحب الدالة el.classList.remove("is-invalid") الفئات المذكورة وحدها وتترك الفئات الهيكلية الأساسية للعنصر سليمة تماماً، كما لا تطلق أي خطأ إذا كانت الفئة غير موجودة أصلاً.

تضيف الدالة el.classList.toggle("expanded") الفئة إن غابت وتحذفها إن وجدت وترجع حالتها المنطقية الجديدة. والأجمل أن تمرير وسيط منطقي ثانٍ مثل el.classList.toggle("has-error", score < 50) يختصر جملة if...else كاملة في سطر واحد حاسم!

JavaScript
function flipDetails() {
  const panel = document.getElementById('faq-body');
  const isOpen = panel.classList.toggle('open-panel');
  document.getElementById('faq-btn').textContent = isOpen ? 'Hide Answer' : 'Show Answer';
}

انتبه لاسم الدالة الدقيق هنا: فبينما تستخدم المصفوفات includes()، يستخدم كائن الفئات الدالة el.classList.contains("active")! وهي تطابق الكلمة الكاملة للفئة بدقة، فلا تخلط بين "btn" و"btn-large".

بدلاً من استدعاء الحذف ثم الإضافة في سطرين منفصلين، تنجز el.classList.replace("status-draft", "status-published") التبديل في خطوة واحدة نظيفة وترجع true إذا عثرت على الفئة القديمة واستبدلتها.

JavaScript
function approveOrder() {
  const pill = document.getElementById('order-pill');
  if (pill.classList.contains('is-pending')) {
    pill.classList.replace('is-pending', 'is-approved');
    pill.textContent = 'Status: Approved';
  }
}
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس إدارة فئات التنسيق بنظافة عبر el.classList باستخدام دوال add وremove وtoggle المشروطة والفحص عبر contains والتبديل الذري عبر replace. الخطوة التالية: اختتم الفصل التاسع بدرس «مجموعات العناصر DOM Collections في JavaScript» لاستكشاف مجموعات المستند الجاهزة وتحويلها عبر Array.from().

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات3

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 3 مفهومةأول بطاقة، أول خطوة
01 Element.classList كائن قائمة الفئات classList
خاصية حية توفر دوال منظمة لإضافة وحذف وعكس وفحص واستبدال فئات التنسيق على العنصر.
للمراجعة
02 classList.toggle(cls, force) دالة العكس والفرض الشرطي toggle
تعكس وجود الفئة تلقائياً، أو تفرض إضافتها وحذفها حسماً عند تزويدها بوسيط منطقي ثانٍ.
للمراجعة
03 classList.contains() دالة فحص انتماء الفئة contains
تتحقق من وجود اسم الفئة الكامل ضمن قائمة فئات العنصر وترجع صواب أو خطأ بدقة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 FAQ FAQ
Frequently Asked Questions
نمط الأسئلة الشائعة التفاعلي الذي يُبنى بسلاسة عبر عكس الفئة بدالة toggle.
للمراجعة
02 ARIA ARIA
Accessible Rich Internet Applications
سمات الوصول المساندة التي تُحدث بالتوازي مع تبديل الفئات البصرية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح مثال الأكورديون وانقر الزر عدة مرات لملاحظة كيف تتحكم القيمة المرجعة من toggle بنص الزر وإظهار الفقرة.

  2. افتح مثال حالة الطلب وانقر زر الاعتماد لمشاهدة تبدل اللون والفئة من الانتظار إلى القبول فوراً.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

ما الدالة الصحيحة في كائن classList للتحقق مما إذا كان العنصر يمتلك الفئة "active"؟

02

كيف تضيف الفئتين "btn" و"btn-primary" معاً في خطوة واحدة عبر classList.add()؟

03

ماذا يفعل الاستدعاء المشروط el.classList.toggle("dark-theme", false) دائماً؟

04

استدعاء card.classList.add("pinned") مرتين متتاليتين يكرر اسم الفئة مرتين داخل سمة العنصر.

05

ماذا ترجع الدالة el.classList.replace("draft", "live") إذا لم يكن العنصر يمتلك الفئة "draft" أصلاً؟

06

إدارة حالات الواجهة عبر classList تحافظ على نظافة التصميم المتجاوب وتوافق الوضع الداكن أفضل من الأنماط السطرية.

07

استدعاء el.classList.remove("missing-class") يطلق خطأ إذا لم تكن الفئة موجودة على العنصر.

08

لماذا يُعد استدعاء el.classList.add("selected") أكثر أماناً من كتابة el.className = "selected"؟

09

على العنصر <button class="btn-large"> ترجع الدالة contains("btn") القيمة false لأنها تطابق اسم الفئة كاملاً.

10

ما القيمة المنطقية التي ترجعها panel.classList.toggle("open") عندما تضيف الفئة إلى العنصر؟