过多递归的原因是什么?

时间:2018-10-27 19:24:23

标签: javascript html

我正在尝试制作一个浏览器数学游戏,但遇到了递归过多的错误,但无法找到原因。

任何有关调试的帮助或建议,将不胜感激。

https://pastebin.com/ugTk00S1

HTML

<body>
    <label id="question"></label>
    <br><br>
    <input type="text" id="answer">
    <br><br>
    <br><br>
    <label id="correct">Correct: 0</label>
    <br><br>
    <label id="incorrect">Incorrect: 0</label>
    <br><br>
    <input type="button" id="enterButton" value="E N T E R" />
</body>

JavaScript

单击按钮时调用evalFunction,并传递2个数字和符号值

似乎在页面加载时按下了按钮,但是即使输入为空白也仍然有一些正确答案。大约有1/21的时间,因此由于所有答案都介于0到20之间,可能是因为它没有将答案归为0,这是以前没有做的。

            var enterButton = document.createElement('enterButton');
        enterButton.onclick = evalFunction(num1, num2, sign);

2 个答案:

答案 0 :(得分:1)

您遇到了问题,因为您突然调用了函数evalFunction

var enterButton = document.createElement('enterButton');
enterButton.onclick = evalFunction(num1, num2, sign);
                      ^

您需要将函数分配给属性onclick

var enterButton = document.createElement('enterButton');
enterButton.onclick = function() {
   evalFunction(num1, num2, sign);
};

或者您可以使用函数click

绑定事件addEventListener
var enterButton = document.createElement('enterButton');
enterButton.addEventListener('click', function() {
   evalFunction(num1, num2, sign);
});

答案 1 :(得分:0)

在您的代码中,您已经像这样执行mathFunctionwindow.onload = mathFunction();,这将导致它在加载窗口时执行。在该mathFunction中,您要使用onclick配置按钮:

enterButton.onclick = evalFunction(num1, num2, sign);

但是这会将evalFunction的值放入onclick中,因为由于写入不正确,它将立即执行。下面是一个正确的示例。

enterButton.onclick = function(){evalFunction(num1, num2, sign);};
相关问题