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

双门抽奖游戏JavaScript调试求助:结果始终显示失败

问题分析与解决方案

嘿,这问题太典型啦!你每次都拿到“Boo you lose”的原因,完全是判断逻辑里的字符串引号用错了!

你看你写的if ("door1Selection" === "randomDoor")——这里你是在比较两个固定字符串:"door1Selection"和"randomDoor",这俩字符串永远不可能相等啊!所以不管用户选哪个门、中奖门是哪个,代码都会直接跳到else分支,显示输的结果。

正确的做法应该是这样:

  1. 先获取用户实际点击的门(不是硬编码字符串)
  2. 把判断里的字符串换成对应的变量,让变量和变量做比较

修正后的完整代码示例:

$(document).ready(function() {
  let doors = ["door1", "door2"];

  // 随机选中中奖门的函数
  function selectDoor() {
    // 用Math.floor更稳妥,适配未来可能增加的门数量
    const randomDoor = doors[Math.floor(Math.random() * doors.length)];
    return randomDoor;
  }

  // 给两个门绑定点击事件
  $("#door1, #door2").click(function() {
    // 获取用户点击的门的ID
    const userSelectedDoor = $(this).attr("id");
    // 生成中奖门
    const winningDoor = selectDoor();

    // 变量和变量比较,不要加引号!
    if (userSelectedDoor === winningDoor) {
      alert("Woohoo! You hit the prize! 🎉");
    } else {
      alert("Boo you lose 😢");
    }
  });
});

关键修改点说明:

  • 去掉了判断条件里的引号:用userSelectedDoor === winningDoor替代字符串比较,让实际的用户选择和随机中奖门做对比
  • 通过$(this).attr("id")动态获取用户点击的门,而不是硬编码某个字符串
  • 把Math.round换成了Math.floor(Math.random() * doors.length),这样如果以后你想加更多门(比如3扇),代码不用改就能适配

另外还要检查一下你的DOM元素:确保两个门的ID确实是door1和door2,和doors数组里的名称完全一致,不然也会出现判断不匹配的情况哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:35:56