如何在JavaScript猜拳游戏中实现输入错误/空时循环弹出prompt?
解决石头剪刀布游戏的输入验证问题
你现在的核心问题是用了for循环(固定次数迭代),但需求是持续提示直到输入合法,这应该用while循环来实现。另外输入验证的逻辑可能写反了,导致不管输入对错都弹错误提示。
直接给你修正后的代码,关键部分我会标注:
const choices = ["rock", "paper", "scissors"]; let userInput; // 用while循环,只要输入不合法就一直循环 while (true) { userInput = prompt("请输入 rock、paper 或 scissors:").trim().toLowerCase(); // 验证输入:空值 或 不在choices数组里 if (!userInput || !choices.includes(userInput)) { alert("输入不合法,请重新输入!"); } else { // 输入合法,跳出循环 break; } } // 到这里userInput就是合法的了,可以继续后续游戏逻辑 console.log(`你选择了:${userInput}`);
关键修改点:
- 把
for循环换成while(true)无限循环,直到输入合法才break退出 - 对用户输入做了
trim()(去除前后空格)和toLowerCase()(统一转小写),避免大小写或空格导致的验证失败 - 只有当输入为空或者不在可选列表里时,才弹出错误提示,合法输入直接跳出循环
这样就能实现你要的效果:输入不合法时持续弹出prompt,直到输入正确才停止。
内容的提问来源于stack exchange,提问作者Quickpois0n
相关产品推荐
相关产品推荐

