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

精灵宝可梦图鉴(Pokedex)数组调用问题:启动全显示而非仅妙蛙种子

解决方案

问题核心是没有按宝可梦维度分组DOM元素,且初始逻辑一次性移除了多个元素的隐藏类,导致所有内容同时显示。按以下步骤修改:

1. 修复HTML结构与默认隐藏状态

把单只宝可梦的所有相关元素(图片、编号、描述、属性)包裹在独立容器中,默认全部隐藏(通过hide类):

<!-- 先定义全局隐藏类的CSS -->
<style>
.hide {
  display: none;
}
</style>

<!-- 每只宝可梦的内容封装在单独容器里 -->
<div class="pokemon-card hide" id="bulbasaur-card">
  <img src="images/pokemon/bulbasaur.png" width="250" height="220">
  <div><strong>001</strong></div>
  <div>Bulbasaur</div>
  <div>
    Species: Seed Pokemon<br><br>
    Height: 2'04<br><br>
    Weight: 15.2lbs(6.9kg)
  </div>
  <div>
    A strange seed was planted on<br><br> its back at birth. The plant<br><br> sprouts and grows with this<br><br> Pokémon.
  </div>
  <div class="grass-one">Grass</div>
  <div class="poison-two">Poison</div>
</div>

<!-- 后续新增宝可梦都用相同结构 -->
<div class="pokemon-card hide" id="ivysaur-card">
  <!-- 妙蛙草的内容 -->
</div>

注意:你原HTML里有语法错误:<div\>应该改为</div>,需修正避免DOM解析异常。

2. 优化JavaScript逻辑

修改数据结构,添加对应宝可梦容器的ID,初始化当前显示索引,只在启动时显示第一只宝可梦:

const pokedex = [
  {
    pokemon: 'bulbasaur',
    cardId: 'bulbasaur-card', // 新增:对应DOM容器的ID
    dexInfo: [
      { dexName: 'bulbasaur-name' },
      { specs: 'bulbasaur-specs' },
      { desc: 'bulbasaur-desc' }
    ],
    dexNumber: 'bulbasaur-no',
    primaryType: 'grass-one',
    secondaryType: 'poison-two'
  }
  // 其他宝可梦数据
];

// 全局变量:记录当前显示的宝可梦索引
let currentIndex = 0;

function turnOnPokedex() {
  console.log('turn-on');
  // 仅显示初始的妙蛙种子容器
  const initialCard = document.getElementById(pokedex[currentIndex].cardId);
  initialCard.classList.remove('hide');
  
  // 初始化后续切换逻辑(如果需要)
}

// 实现宝可梦切换逻辑(示例)
function nextPokemon() {
  // 隐藏当前显示的宝可梦
  const currentCard = document.getElementById(pokedex[currentIndex].cardId);
  currentCard.classList.add('hide');
  
  // 切换到下一只(循环切换)
  currentIndex = (currentIndex + 1) % pokedex.length;
  
  // 显示下一只宝可梦
  const nextCard = document.getElementById(pokedex[currentIndex].cardId);
  nextCard.classList.remove('hide');
}

3. 为什么原来的代码会全部显示?

你原代码中turnOnPokedex函数一次性移除了pokemonImage、pokemonInfo等多个元素的hide类,但这些元素没有按宝可梦分组——当后续新增其他宝可梦的同类元素时,所有元素的隐藏状态都会被移除,导致全部内容同时显示。

通过按宝可梦分组容器,我们只需要操作单个容器的隐藏状态,就能精准控制单只宝可梦的显示/隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:26:06