You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一<img>标签切换图片及GENGAR类型不显示问题求助

Pokemon搜索应用:耿鬼属性无法显示的修复方案

常见问题原因及修复步骤

  • DOM元素选择错误
    先确认用来显示属性的types元素能被正确获取。检查HTML里是否有对应ID的元素,比如:

    <div id="pokemon-types"></div>
    

    JS里获取元素的代码要正确:

    const types = document.getElementById('pokemon-types');
    
  • 属性数据处理逻辑错误
    PokeAPI返回的宝可梦属性是数组结构,每个元素嵌套了type.name字段。如果直接赋值整个数组或者只取第一个元素,就会导致耿鬼的两个属性无法全部显示。正确的处理方式是遍历数组拼接文本:

    // 假设从API获取到的宝可梦数据为pokemon对象
    const typeList = pokemon.types.map(item => item.type.name.toUpperCase()).join(' / ');
    types.innerHTML = typeList;
    
  • 缺失错误处理
    当搜索不存在的宝可梦时,要给属性区域设置默认文本,避免空白:

    if (pokemon.types?.length) {
      const typeList = pokemon.types.map(item => item.type.name.toUpperCase()).join(' / ');
      types.innerHTML = typeList;
    } else {
      types.innerHTML = '未找到属性';
    }
    

完整搜索函数示例

async function searchPokemon(inputValue) {
  try {
    const res = await fetch(`https://pokeapi.co/api/v2/pokemon/${inputValue.toLowerCase()}`);
    const pokemon = await res.json();
    
    // 更新图片
    const pokemonImg = document.getElementById('pokemon-img');
    pokemonImg.src = pokemon.sprites.front_default;
    pokemonImg.alt = pokemon.name;
    
    // 更新属性
    const types = document.getElementById('pokemon-types');
    const typeList = pokemon.types.map(item => item.type.name.toUpperCase()).join(' / ');
    types.innerHTML = typeList;
  } catch (err) {
    console.log('搜索失败:', err);
    const types = document.getElementById('pokemon-types');
    types.innerHTML = '未找到该宝可梦';
    const pokemonImg = document.getElementById('pokemon-img');
    pokemonImg.src = '你的默认图片路径';
  }
}

内容的提问来源于stack exchange,提问作者Dana Rutscher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:22:21