البرمجة

إصلاح مشكلة عدم تنفيذ العداد في حلقة If Else في جافا سكريبت

تحدث المشكلة في تعبير الشرط في جملة if و else if في الكود. في JavaScript، يجب استخدام == أو === للمقارنة بين قيمتين، بينما يتم استخدام = للتعيين. بمعنى آخر، يجب تغيير = إلى == أو === في الشروط. الكود المصحح يبدو كما يلي:

javascript
var imagesArray = ["http://vignette2.wikia.nocookie.net/pokemon/images/e/ef/025Pikachu_Pokemon_Mystery_Dungeon_Red_and_Blue_Rescue_Teams.png/revision/latest?cb=20150105233050", "http://assets.pokemon.com/assets/cms2/img/pokedex/full//007.png", "http://assets.pokemon.com/assets/cms2/img/pokedex/full/001.png", "http://www.pokemonxy.com/_ui/img/_en/art/Fennekin-Pokemon-X-and-Y.jpg", "http://www.pokemon20.com/assets/img/mythical/arceus/poke_arceus.png"]; function loopImages(count) { var counter = count % imagesArray.length; $('img').attr('src', imagesArray[counter]); $('#firstStar').fadeIn(500, function(){ $('#firstStar').delay(500).fadeOut(500, loopImages.bind(null, count + 1)); }); console.log(counter); if (counter === 1){ $('#imageInfo').html('One'); } else if (counter === 2){ $('#imageInfo').html('Two'); } } loopImages(0);

بعد هذا التغيير، يجب أن يتم تغيير نص #imageInfo تلقائيًا بناءً على الصور التي تظهر.

المزيد من المعلومات

الكود الذي قدمته يقوم بعرض سلسلة من الصور بشكل دوري، حيث يتم تغيير الصورة كلما انتهى العرض السابق. كما يقوم بعرض نص مرتبط بالصورة الحالية.

يتم ذلك باستخدام دالة loopImages التي تقوم بتحديث src للعنصر ليعرض الصورة الجديدة، ثم تستخدم jQuery لتحديد العنصر #firstStar وتطبيق تأثير fadeIn لعرضه بشكل سلس، ثم يتم تأخير العرض قبل تطبيق تأثير fadeOut لإخفائه مجددًا. بعد ذلك، يتم استدعاء دالة loopImages مجددًا مع تحديث للعداد لعرض الصورة التالية.

المشكلة الرئيسية في الكود الأصلي كانت في استخدام عامل التعيين = بدلاً من عامل المقارنة === في شروط if و else if، الأمر الذي أدى إلى عدم تحقق الشرط المطلوب وعدم تغيير النص المعروض بشكل صحيح. باستبدال = بـ === يتم الآن المقارنة بين قيمتين بدلاً من التعيين، مما يسمح بتغيير النص المعروض بشكل صحيح بناءً على الصورة الحالية.

زر الذهاب إلى الأعلى