gpt4 book ai didi

javascript - 简单的算术挑战功能,尝试次数有限

转载 作者:行者123 更新时间:2023-12-03 12:25:41 25 4
gpt4 key购买 nike

最近开始学习 Javascript,尝试阅读Javascript:权威指南Eloquent Javascript,同时自己去尝试一些东西,以便真正将它们铭刻在我的内存中。我想到了一个让我了解算术运算和条件语句的好方法,我围绕每个数学运算符构建了一系列小游戏,并从加法开始。

function beginAdditionChallenge() {
var x = Math.ceiling(Math.random()*100);
alert(x);
for (var i = 0; i < 3; i++) {
var a = Number(prompt("Provide the first addend.", ""));
var b = Number(prompt("Provide the second addend.", ""));
if (a + b === x) {
alert("Well done!");
break;
}
else if (a + b !== x && i < 3) {
alert("Please try again.");
}
else {
alert("Fail.");
}
}
}

function initChallenge() {
var button = document.getElementById("challengeButton");
button.addEventListener("click", beginAdditionChallenge);
}

window.addEventListener("load", initChallenge);

您可以在 JSFiddle 上看到迄今为止的全部内容,here 。这个想法是,单击按钮会生成一个 1 到 100 之间的随机数,将其显示给用户,然后提示他们提供两个加数,让他们尝试 3 次。如果这些加数之和等于 RNG 数,则祝贺用户并结束程序。如果他们没有提供合适的加数,循环会提示他们再次尝试,直到他们尝试了 3 次,此时程序会警告他们并结束。

我知道事件监听器不是这里的故障点,因为当我将 beginAdditionChallenge 更改为仅显示测试警报时,它可以工作,但我不知道我创建的循环到底出了什么问题。

最佳答案

你做对了。但是,Math.ceiling 不是函数,应该是 Math.ceil。此外,您的代码(在 jsfiddle 中)应设置为 wrap in head。为什么?因为现在您在页面加载时调用 initChallenge 。但是,在您的 jsfiddle 示例中,代码运行 onLoad 因此 load 事件永远不会被调用。本质上,您是在页面加载后添加加载事件。

http://jsfiddle.net/rNn32/

编辑:此外,您还有一个最多可达三个的 for 循环。因此

else if (a + b !== x && i < 3) {
alert("Please try again.");
}

应该是

else if (a + b !== x && i < 2) {
alert("Please try again.");
}

因为当i === 2时,用户的最后机会就结束了。

关于javascript - 简单的算术挑战功能,尝试次数有限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com