تحدث المشكلة في تعبير الشرط في جملة if
و else if
في الكود. في JavaScript، يجب استخدام ==
أو ===
للمقارنة بين قيمتين، بينما يتم استخدام =
للتعيين. بمعنى آخر، يجب تغيير =
إلى ==
أو ===
في الشروط. الكود المصحح يبدو كما يلي:
javascriptvar 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
، الأمر الذي أدى إلى عدم تحقق الشرط المطلوب وعدم تغيير النص المعروض بشكل صحيح. باستبدال =
بـ ===
يتم الآن المقارنة بين قيمتين بدلاً من التعيين، مما يسمح بتغيير النص المعروض بشكل صحيح بناءً على الصورة الحالية.