"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استخدام getElementsByClassName بشكل صحيح وتغيير أنماط العناصر بناءً على الأحداث؟

كيفية استخدام getElementsByClassName بشكل صحيح وتغيير أنماط العناصر بناءً على الأحداث؟

تم النشر بتاريخ 2024-11-08
تصفح:133

How to Correctly Use getElementsByClassName and Change Element Styles Based on Events?

تغيير أنماط العناصر باستخدام getElementsByClassName

يتيح لك getElementsByClassName تحديد عناصر متعددة بنفس اسم الفئة. في المثال الموضح، تهدف التعليمات البرمجية إلى تغيير لون الخلفية لجميع divs مع اسم فئة محدد عند وقوع حدث خارج تلك divs.

تشخيص المشكلة

يحتوي الكود المقدم على بعض المشكلات:

  1. الاستخدام غير الصحيح لـ getElementsByClassName: يُرجع بناء الجملة getElementsByClassName() مجموعة من العناصر المطابقة، وليس عنصر DOM واحد. لتغيير نمط كل عنصر، تحتاج إلى التكرار عبر المجموعة.
  2. بناء جملة HTML غير صالح: لا يمكن أن يحتوي معرف العنصر على مسافات، مما يجعل معرفات colorwitcher A وcolorwitcher B غير صالحة .

الحل

لحل هذه المشكلات، يمكنك استخدام الكود المصحح التالي:

window.onload = function() {
  var aElements = document.getElementsByClassName('a');
  var bElements = document.getElementsByClassName('b');

  document.getElementById('A').addEventListener('mouseover', function() {
    changeColor(aElements, 'red');
  });

  document.getElementById('B').addEventListener('mouseover', function() {
    changeColor(bElements, 'blue');
  });
};

function changeColor(elements, color) {
  for (var i = 0; i 

في هذا الكود المصحح:

  1. نقوم بالتكرار عبر المجموعات التي تم إرجاعها بواسطة getElementsByClassName لتغيير نمط جميع العناصر المطابقة.
  2. نستخدم المعرفات الصحيحة بدون مسافات. لتحديد العناصر المسببة.
  3. نحدد وظيفة تغيير اللون لتطبيق تغيير اللون المطلوب على العناصر.

ملاحظات إضافية

للحصول على الأداء الأمثل، فكر في تخزين مجموعة العناصر مؤقتًا بدلاً من إعادة الاستعلام عنها في كل مرة. بالإضافة إلى ذلك، يعد استخدام فئات CSS ومستمعي الأحداث لتغييرات النمط أكثر كفاءة من السمات المضمنة.

بيان الافراج أعيد طبع هذه المقالة على: 1729726237 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3