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

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر

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

منهج JavaScript

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

كل اللغات
مدرسة البرمجة/منهج JavaScript/إنشاء وحذف عناصر الصفحة ديناميكياً (Creating & Deleting Nodes)

إنشاء وحذف عناصر الصفحة ديناميكياً (Creating & Deleting Nodes)

createElement javascriptappendChild removeانشاء عناصر ديناميكياdocument fragmentحذف عنصر من dom

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

1
الدالةالوظيفة
createElement()إنشاء عنصر جديد في الذاكرة
appendChild() / append()إضافة عنصر كآخر ابن
prepend()إضافة عنصر كأول ابن
remove()حذف العنصر من الصفحة
DocumentFragmentحاوية مؤقتة لتجميع عناصر قبل الإضافة الجماعية

الشرح

إلى جانب تعديل عناصر موجودة مسبقاً، تسمح جافاسكريبت بإنشاء عناصر HTML جديدة بالكامل من الصفر عبر الكود، وإضافتها للصفحة، أو حذف عناصر موجودة منها — وهذا أساس بناء تطبيقات ديناميكية مثل قوائم المهام أو التعليقات التي تُضاف دون إعادة تحميل الصفحة.

document.createElement() تُنشئ عنصراً جديداً بالكامل في الذاكرة، لكنه لا يظهر في الصفحة بعد حتى يُضاف صراحة إليها. بعد الإنشاء، يمكنك تعيين محتواه ونمطه وخصائصه بنفس الطرق التي تعلمناها سابقاً (textContent، classList، setAttribute)، قبل إضافته فعلياً للصفحة.

لإضافة العنصر الجديد إلى الصفحة، تستخدم appendChild() لإضافته كآخر ابن لعنصر أب محدد، أو الدالة الأحدث والأكثر مرونة append() التي تقبل أكثر من عنصر أو نص في استدعاء واحد. أما prepend() فتُضيف العنصر كأول ابن. لإدراج عنصر في موضع دقيق نسبة لعنصر آخر (قبله أو بعده تحديداً)، تُستخدم insertBefore() أو الدالة الأحدث insertAdjacentElement/insertAdjacentHTML.

لحذف عنصر من الصفحة، أبسط طريقة حديثة هي استدعاء remove() مباشرة على العنصر نفسه. الطريقة الأقدم كانت تتطلب الوصول للعنصر الأب أولاً ثم استدعاء parentNode.removeChild(العنصر) — وهي لا تزال تعمل لكنها أطول. من المهم الانتباه عند إنشاء عناصر كثيرة داخل حلقة تكرارية إلى استخدام DocumentFragment كحاوية مؤقتة لتجميع كل العناصر أولاً، ثم إضافتها للصفحة دفعة واحدة، لأن هذا يُقلل عدد مرات إعادة رسم الصفحة (Reflow) ويُحسّن الأداء بشكل ملحوظ مقارنة بإضافة كل عنصر على حدة.

الصياغة (Syntax)

syntax
1const عنصر_جديد = document.createElement("li");
2عنصر_جديد.textContent = "مهمة جديدة";
3عنصر_جديد.classList.add("todo-item");
4
5document.querySelector("#list").appendChild(عنصر_جديد);
6
7// حذف عنصر
8عنصر_جديد.remove();

أمثلة عملية

مثال 1: بناء قائمة مهام ديناميكية كاملة

بناء قائمة مهام ديناميكية كاملة
1// إضافة عنصر لقائمة عند الضغط على زر
2const زر = document.querySelector("#addBtn");
3const القائمة = document.querySelector("#todoList");
4
5زر.addEventListener("click", () => {
6 const عنصر = document.createElement("li");
7 عنصر.textContent = `مهمة رقم ${القائمة.children.length + 1}`;
8
9 const زر_حذف = document.createElement("button");
10 زر_حذف.textContent = "حذف";
11 زر_حذف.addEventListener("click", () => عنصر.remove());
12
13 عنصر.appendChild(زر_حذف);
14 القائمة.appendChild(عنصر);
15});

مثال 2: DocumentFragment لتحسين الأداء

DocumentFragment لتحسين الأداء
1// استخدام DocumentFragment لأداء أفضل مع عناصر كثيرة
2const المقطع = document.createDocumentFragment();
3const أسماء = ["أحمد", "سارة", "محمد", "ليلى"];
4
5أسماء.forEach(اسم => {
6 const عنصر = document.createElement("li");
7 عنصر.textContent = اسم;
8 المقطع.appendChild(عنصر); // يُضاف للمقطع المؤقت فقط
9});
10
11document.querySelector("#names").appendChild(المقطع); // إضافة واحدة فقط للصفحة

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

  • —استخدم DocumentFragment عند إنشاء عدد كبير من العناصر في حلقة، لتجنب إعادة رسم الصفحة عشرات المرات.
  • —remove() على العنصر مباشرة أبسط وأحدث من parentNode.removeChild(العنصر).
  • —عند إنشاء عنصر جديد، اضبط كل خصائصه (نص، فئات، أحداث) قبل إضافته للصفحة لتجنب "وميض" مرئي.
  • —append() الحديثة أكثر مرونة من appendChild() لأنها تقبل نصوصاً وعناصر متعددة في استدعاء واحد.

الدرس السابق

التعامل مع الأحداث (Event Listeners)

الدرس التالي

التعامل مع النماذج والتحقق منها (Form Validation)

نوفيل

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر