双门抽奖游戏JavaScript调试求助:结果始终显示失败
问题分析与解决方案
嘿,这问题太典型啦!你每次都拿到“Boo you lose”的原因,完全是判断逻辑里的字符串引号用错了!
你看你写的if ("door1Selection" === "randomDoor")——这里你是在比较两个固定字符串:"door1Selection"和"randomDoor",这俩字符串永远不可能相等啊!所以不管用户选哪个门、中奖门是哪个,代码都会直接跳到else分支,显示输的结果。
正确的做法应该是这样:
- 先获取用户实际点击的门(不是硬编码字符串)
- 把判断里的字符串换成对应的变量,让变量和变量做比较
修正后的完整代码示例:
$(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
相关产品推荐
相关产品推荐

