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!"); // 可选:如果想猜对后重新生成新数字,可以在这里调用生成随机数的逻辑 } } }
额外说明
- 我用
parseInt把按键的字符串转成数字,同时加了!isNaN(spielerZahl)的判断,确保只有用户按下数字键时才执行后续逻辑,避免非数字按键(比如回车、空格)导致的错误。 - 把相等判断移到了
TasteGedrueckt函数内部,这样每次用户按下数字键后都会立刻检查是否匹配。 - 去掉了重复的
var zahl声明,让代码更规范。
内容的提问来源于stack exchange,提问作者Neti Heft
相关产品推荐
相关产品推荐

