اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم.

أنا بصدد القيام ببرنامج بحث عن بوكيمونات و ذلك بواسطة fetchAPI ،

let url= "https://pokeapi.co/api/v2/pokemon?limit=200"
function fetchPoke (){
    fetch(url)
    .then(res => res.json())
    .then((allPoke) =>{
        // console.log(allPoke)
        allPoke.results.forEach((pokemon) => {

            fetchPokeFull(pokemon)
            // console.log(pokemon.url)
        });
       
    })
}
fetchPoke()

function fetchPokeFull(pokemon){

    let urlP           = pokemon.url
    let nameP          = pokemon.name
    let objPokemonFull = {}
    console.log(urlP);

    fetch(urlP)
    .then( resP => resP.json())
    .then((pokeData) =>{
        // console.log(pokeData)
        objPokemonFull.pic = pokeData.sprites.front_default   //صورة البوكيمون
        // console.log(objPokemonFull.pic);
        objPokemonFull.type = pokeData.types[0].type.name    //نوع البوكيمون
        // console.log(objPokemonFull.type);

        fetch(`https://pokeapi.co/api/v2/pokemon-species/${nameP}`)
        .then(re => re.json())
        .then((pokeData) =>{
            // console.log(pokeData)
            objPokemonFull.name = pokeData.names[8].name  //إختيار اللغة الإنجليزية لأسماء البوكيمون (العربية غير متوفرة)
            allPokemon.push(objPokemonFull)

            if (allPokemon.length == 200){
                console.log(allPokemon);
            }
        })

    })

}
fetchPokeFull()

console يظهر لي خطأ في عدم معرفة متغير لكن الكود يعمل بشكل جيد

Uncaught TypeError: Cannot read properties of undefined (reading 'url')
    at fetchPokeFull (script.js:36:34)
    at script.js:65:1

شكرا مسبقا. أعتقد أن الخطأ عند مناداة fetchPokeFull

تم التعديل في بواسطة Hassan Hedr
إضافة الشيفرة ونص الخطأ

Recommended Posts

  • 0
نشر
بتاريخ الآن قال Hassan Hedr:

يرجى إرفاق الشيفرة من الملف بشكل نصي مع تنسيقه كشيفرة ضمن السؤال، ,أيضًا إرفاق رسالة الخطأ بشكل نصي من فضلك حتى يستطيع جميع الزوار مساعدتك بشكل أفضل 

Pokedox.zip

  • 0
نشر
بتاريخ 17 دقائق مضت قال Hassan Hedr:

يرجى تعديل السؤال الأساسي وعدم إرفاق الملفات بل فقط إضافة الجزء المتعلق بالخطأ كشيفرة ضمن السؤال وأيضًا رسالة الخطأ كنص ضمنها

الخطأ موجود في السطر 65 script.js

الخطأ مثلما قلت هو عندما قمت بإعادة مناداة الدالة   fetchPokeFull

شكرا لكم

  • 0
نشر

الخطأ لديك في استدعاء دالة fetchPokeFull في النهاية، حيث أن الدالة تتوقع تمرير غرض يعبر عن بيانات عنصر من عناصر البحث، لا داعي لإستدعائها بنفسك فالتابع fetchPoke يثوم باستدعائه بشكل مناسب عند وصول البيانات،

قم بحذف الاستدعاء الأخير كالتالي

// fetchPokeFull()

ولتجنب الاستدعاء الخاطئ يمكن حماية التابع من داخله عبر الخروج مبكرًا في حال كان المعامل الممرر بلا قيمة كالتالي 

function fetchPokeFull(pokemon){
  
  if(!pokemon) return; // التحقق من المعاملات
  ...

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...