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); }); });
代码说明:
- 存储数字到data属性:把每个卡片的数字存在
data-number里,后续点击卡片时不用重复写硬编码的数字,代码更简洁易维护 - 按钮点击逻辑整合:去掉了单独的
myFunction,直接在按钮点击事件里调用setTimeout,逻辑更连贯,避免函数未调用的问题 - 添加卡片点击恢复功能:用户点击任意卡片时,会把之前存储的数字重新显示出来,满足“隐藏后点击卡片显示”的需求
- 修正延迟时间:改成5000毫秒,完美匹配你“数字显示5秒后隐藏”的要求
内容的提问来源于stack exchange,提问作者nasim
相关产品推荐
相关产品推荐

