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

HTML/JS猜数字游戏Bug求助:输入任意值均判定正确

解决猜数字游戏的Bug

嘿,我看到你遇到的问题啦!咱们一步步来修复这个猜数字游戏的问题~

核心问题(导致每次都提示正确的原因)

你在第一个if判断里用了赋值运算符=,而不是比较运算符===:

if (guess = number) { // 这里是赋值,不是比较!

每次执行这个语句时,number的值会被赋给guess,这个赋值操作的结果就是number本身(非零数字在条件判断里会被视为true),所以这个条件永远成立,自然每次都弹出“正确”的提示。

其他需要修复的问题

  1. 类型转换问题:prompt()返回的是字符串类型,直接和数字number比较会出现意料之外的结果,需要把用户输入转换成数字。
  2. 次数累加错误:num_guesses = +1是将次数重置为1,而不是累加,应该用num_guesses += 1或者num_guesses++。
  3. 提示文本颠倒:当用户猜的数比目标小的时候,应该提示“猜更高”,反之提示“猜更低”,你现在写反了。
  4. 条件判断结构:使用if-else if-else结构,避免多个条件同时触发(比如如果用多个独立的if,可能会在错误判断后继续执行后续的if)。

修正后的完整代码

HTML代码

<!DOCTYPE html>
<html lang="en">
<body>
  PLAY THE GUESSING GAME: Guess a number between 1 and 1000!
  <br>
  <button onclick="Guessing_game()">play</button>
  <br>
  <p> You have guessed this many times: </p>
  <p id="num_guesses"></p>
  <script src="Assignment%20Task%202.js"></script>
</body>
</html>

(注:把<script>标签放到<body>末尾,确保DOM元素加载完成后再执行JS,避免潜在问题)

JavaScript代码

var number = Math.floor(Math.random() * 1000) + 1;
var num_guesses = 0; // 初始化为0,第一次猜测后累加为1更合理

function Guessing_game() {
  var guessInput = prompt("What is your guess?");
  // 转换为数字,同时处理非数字输入的情况
  var guess = parseInt(guessInput, 10);

  // 先判断输入是否有效
  if (isNaN(guess) || guess < 1 || guess > 1000) {
    alert("请输入1到1000之间的有效数字!");
    return;
  }

  num_guesses += 1; // 累加猜测次数

  if (guess === number) {
    alert(`Good Job! You got the number correct! 你一共猜了${num_guesses}次`);
    // 猜中后可以重置游戏,比如生成新数字和次数
    number = Math.floor(Math.random() * 1000) + 1;
    num_guesses = 0;
  } else if (guess < number) {
    alert("Bad luck! You need to guess higher");
  } else {
    alert("Bad luck! You need to guess lower");
  }

  document.getElementById("num_guesses").innerHTML = num_guesses;
}

额外优化点

  • 增加了输入有效性判断,处理用户输入非数字或者超出范围的情况
  • 猜中后重置游戏,方便用户继续玩
  • 使用模板字符串让提示信息更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:41:19