【问题标题】:Simple arithmetic challenge function with limited attempts尝试次数有限的简单算术挑战函数
【发布时间】:2014-06-14 20:15:21
【问题描述】:

最近开始学习 Javascript,尝试阅读 Javascript: The Definitive GuideEloquent 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

标签: javascript loops if-statement for-loop


【解决方案1】:

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

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时,用户最后的机会已经结束。

【讨论】:

  • 谢谢!天花板/天花板的事情对我来说是一个愚蠢的错误。我去修复了那个和 else if 语句,现在一切正常。
【解决方案2】:

一切都很好。只需更改:-

var x = Math.ceiling(Math.random()*100);

到:-

var x = Math.ceil(Math.random()*100);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多