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

JavaScript猜数字功能异常:输入正确数字仍判定错误

解决你的JavaScript猜数字功能异常问题

嘿,我一眼就看出问题所在啦!你的猜数字功能不管输入啥都显示错误,主要是这几个关键问题:

核心问题:输入值获取时机错误

你在页面刚加载的时候就执行了GuessedNum = document.getElementById('GNum').value,这时候用户还没来得及输入任何内容,GuessedNum会是一个空字符串。之后点击按钮调用myFunction()时,你并没有重新获取输入框的最新值——也就是说,不管用户输入多少,程序始终拿最开始的空值和68对比,结果当然永远是错误啦!

次要问题:其他小瑕疵

  • 按钮的ID写了id="myFunction()",ID里不能包含括号,而且ID和函数名完全没必要绑定,改成更清晰的名称比如submitBtn会更规范。
  • 猜测次数的逻辑有点绕:你在错误分支里先计算io = i + 1,再执行i++,虽然第一次结果是对的,但逻辑不够直观;而且猜对的时候没有递增计数,会导致次数统计不全。
  • 变量定义没加var/let/const,容易造成全局变量污染,这是个不好的编程习惯。

修正后的完整代码

JavaScript部分

var numToBeGuessed = 68;
var i = 0; // 用var声明变量,避免全局污染

function myFunction() {
  // 每次点击按钮时,重新获取输入框的最新值并转为数字类型
  var guessedNum = parseInt(document.getElementById('GNum').value);
  
  if (guessedNum === numToBeGuessed) { // 用严格相等===,避免类型隐式转换的坑
    alert("Correct Guess! The number is in fact " + numToBeGuessed);
    i++; // 猜对也统计次数,更合理
  } else {
    i++;
    alert("Wrong Guess!");
    alert("Number of Guesses: " + i);
  }
}

HTML部分

<input type="number" id="GNum">
<input type="button" id="submitBtn" onclick="myFunction()" value="Submit">

关键修改说明

  1. 移到函数内获取输入值:确保每次点击按钮时,都能拿到用户刚输入的最新内容,而不是页面加载时的空值。
  2. 类型转换:用parseInt()把输入框的字符串值转成数字,配合严格相等===比较,避免字符串和数字对比的潜在问题(比如"68" == 68成立,但如果是其他场景可能出错)。
  3. 简化计数逻辑:不管猜对猜错,都先递增计数,逻辑更清晰直观。
  4. 修正按钮ID:去掉了无效的括号,让HTML更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:57:44