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

jQuery数字记忆游戏开发疑问:点击按钮后数字显示隐藏功能失效

数字记忆游戏代码问题分析与修复

嘿,作为编程和JS新手,你这个数字记忆游戏的想法超有意思!咱们来一步步梳理你代码里的问题,然后把它改成能正常运行的版本:

你的代码当前存在的问题:

  • myFunction函数从未被调用:你定义了这个用来隐藏数字的函数,但点击按钮后根本没触发它,所以数字会一直显示着
  • 延迟时间不符合需求:你设置的是4000毫秒(也就是4秒),但需求是显示5秒,应该改成5000
  • 缺少卡片点击恢复数字的逻辑:目前清空数字后,用户点击卡片没法把数字显示回来,这部分核心功能缺失了

修复后的完整代码

$(document).ready(function() {
  // 先把每个卡片对应的数字存在data属性里,方便后续复用
  const cardNumbers = {
    k1: "2", k2: "3", k3: "1", k4: "3",
    k5: "5", k6: "6", k7: "1", k8: "6",
    k9: "4", k10: "7", k11: "8", k12: "8",
    k13: "5", k14: "7", k15: "2", k16: "4"
  };

  // 按钮点击事件:显示数字 + 启动隐藏定时器
  $("button").click(function() {
    // 遍历设置每个卡片的数字,并把数字存在data属性中
    Object.keys(cardNumbers).forEach(id => {
      $(`#${id}`).html(cardNumbers[id]).data("number", cardNumbers[id]);
    });
    
    // 5秒后清空所有卡片的数字
    setTimeout(function() {
      $('.kart').empty();
    }, 5000); // 修正为5000毫秒=5秒,符合需求
  });

  // 卡片点击事件:恢复显示对应的数字
  $('.kart').click(function() {
    // 从data属性里取出之前存储的数字,重新显示
    const targetNumber = $(this).data("number");
    $(this).html(targetNumber);
  });
});

代码说明:

  1. 存储数字到data属性:把每个卡片的数字存在data-number里,后续点击卡片时不用重复写硬编码的数字,代码更简洁易维护
  2. 按钮点击逻辑整合:去掉了单独的myFunction,直接在按钮点击事件里调用setTimeout,逻辑更连贯,避免函数未调用的问题
  3. 添加卡片点击恢复功能:用户点击任意卡片时,会把之前存储的数字重新显示出来,满足“隐藏后点击卡片显示”的需求
  4. 修正延迟时间:改成5000毫秒,完美匹配你“数字显示5秒后隐藏”的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:33:57