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

Chrome运行猜数字JS代码时ii为NaN的原因(已用parseInt)

猜数字游戏中ii为NaN的原因及解决办法

问题根源

  • 变量ii的初始化时机错误:页面刚加载时,文本输入框是空的,parseInt("")会直接返回NaN,你把这个初始的NaN值存在了ii里,之后没有再更新它。
  • 点击按钮的send函数中,没有重新读取用户当前输入的内容,始终使用页面加载时的那个NaN值进行判断。

修正后的代码

JavaScript 代码

// 生成1~100的随机整数
let num = parseInt(Math.random() * 100) + 1;
let i = document.querySelector("input[type='text']");
let sp = document.querySelector("span");
let count = 0;

function send() {
  count++;
  // 每次点击时重新读取并转换用户输入
  let ii = parseInt(i.value);
  // 额外判断:如果输入无效(比如非数字),提示用户
  if (isNaN(ii)) {
    sp.innerText = "请输入有效的数字!";
    return;
  }
  if (ii === num) {
    sp.innerText = `猜对了!一共猜了${count}次`;
  } else if (ii > num) {
    sp.innerText = "太大了";
  } else {
    sp.innerText = "太小了";
  }
}

HTML 代码

<input type="text" placeholder="输入1~100之间的整数">
<input type="button" value="猜数字" onclick="send()">
<h1>结果:<span></span></h1>

额外说明

  • 增加了isNaN(ii)的判断,避免用户输入非数字内容时出现逻辑错误。
  • 给querySelector添加了type='text'的限定,避免选中按钮类型的input,逻辑更严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:30:51