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

点击触发图片显示与切换问题求助:卡牌显示及翻面功能异常排查

记忆游戏卡牌翻转功能代码问题排查

嘿,我看了你写的flipCard函数代码,发现几个明显的问题,正好是阻碍你实现「显示卡牌图片」和「卡牌翻面显示正面」这两个功能的关键:

先把你贴出的代码完整呈现出来方便分析:

var flipCard = function(){ 
  var cardId = this.getAttribute('data-id'); 
  var cardOne = cards[0]; 
  cardsInPlay.push(cards[0].rank); 
  console.log("User flipped " + cards[0].rank); 
  console.log(cards[0].cardImage); 
  var cardTwo = cards[2]; 
  cardsInPlay.push(cards[2].rank); 
  console.log("User flipped " + ...

核心错误点:

  • 拿到了点击卡牌的ID却完全没用到:你通过this.getAttribute('data-id')获取了用户点击卡牌的标识,但后续直接硬编码用cards[0]和cards[2],这意味着不管用户点哪张卡,代码都只会操作第1张和第3张卡牌,完全和用户的实际操作脱节,根本实现不了「点哪张翻哪张」的效果。
  • 单次点击处理两张卡牌,逻辑混乱:flipCard应该是用户点击单张卡牌时触发的函数,每次只需要处理当前点击的那一张卡牌即可,但你现在直接在函数里硬塞了两张卡牌的操作,会导致每次点击都往cardsInPlay里添加两个rank,逻辑完全错误。
  • 只打印图片地址,没有实际显示图片:你只是在控制台输出了卡牌图片的地址,但没有任何代码把这个图片应用到页面的卡牌元素上,自然看不到卡牌图片的显示和翻面效果。

修正后的核心逻辑示例:

var flipCard = function(){ 
  // 获取当前点击卡牌的ID,拿到对应的卡牌数据
  var cardId = this.getAttribute('data-id'); 
  var currentCard = cards[cardId]; 

  // 将卡牌正面图片应用到元素上,实现翻面显示正面的效果
  this.style.backgroundImage = `url(${currentCard.cardImage})`;
  
  // 记录当前翻开卡牌的rank
  cardsInPlay.push(currentCard.rank); 
  console.log("User flipped " + currentCard.rank); 
  console.log(currentCard.cardImage); 

  // 这里可以继续添加后续的匹配判断逻辑(比如两张卡牌是否相同)
}

这样修改后,每次点击卡牌都会操作用户实际点击的那张,并且把正面图片设置到卡牌元素上,就能实现你想要的基础显示和翻面功能了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:38:08