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

JavaScript条件判断失效:用户输入数字与随机数匹配无输出求助

问题分析与解决方案

嘿,别担心,英语不好完全没关系!我来帮你看看问题出在哪~

核心问题

你的代码里有两个关键问题导致控制台无法输出"geschafft!":

  • 判断时机错误:你用来检查数字是否相等的if (zahl == spielerZahl)语句,是在页面加载完成后立即执行的。这时候用户还没按下任何按键,spielerZahl还是初始的空字符串,所以这个判断永远不会触发。
  • 冗余的变量声明与代码:你重复声明了zahl变量,而且按键判断的一堆if-else完全可以简化。

修正后的代码

// 初始化变量,避免重复声明
var gedrueckt = "";
var zahl; // 这里不再赋值空字符串,后面直接生成随机数
var spielerZahl = '';

// 生成随机数
var min = 0;
var max = 9;
zahl = Math.round(Math.random() * (max - min)) + min;
console.log(zahl);

// 在HTML中显示随机数
document.getElementById("zutippen").innerHTML = zahl;

// 监听按键事件
window.addEventListener("keydown", TasteGedrueckt);

function TasteGedrueckt (evt) {
  gedrueckt = evt.key;
  // 直接将按键字符串转为数字,简化一堆if-else
  spielerZahl = parseInt(gedrueckt);
  
  // 只在用户按下数字键时检查(避免非数字按键干扰)
  if (!isNaN(spielerZahl)) {
    console.log(spielerZahl);
    // 将判断放到按键函数内,每次按键后检查
    if (zahl === spielerZahl){
      console.log("geschafft!");
      // 可选:如果想猜对后重新生成新数字,可以在这里调用生成随机数的逻辑
    }
  }
}

额外说明

  1. 我用parseInt把按键的字符串转成数字,同时加了!isNaN(spielerZahl)的判断,确保只有用户按下数字键时才执行后续逻辑,避免非数字按键(比如回车、空格)导致的错误。
  2. 把相等判断移到了TasteGedrueckt函数内部,这样每次用户按下数字键后都会立刻检查是否匹配。
  3. 去掉了重复的var zahl声明,让代码更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:57:51