Javascript 在数学游戏中检查答案赢了';不执行

Javascript 在数学游戏中检查答案赢了';不执行,javascript,html,Javascript,Html,这是我正在制作的一个数学练习游戏,它使用随机函数来改变数学题的数量。用户将在文本框中输入答案,然后单击名为“检查”的按钮检查答案。fillElements()函数正在工作,但是当我单击“检查”时,无法从程序中获得响应。到目前为止,我已经整理了许多错误,但这个问题我看不见,也看不懂 <body onload="fillElements()"> <form action="math.html"> <ul> <li id="num"> </

这是我正在制作的一个数学练习游戏,它使用随机函数来改变数学题的数量。用户将在文本框中输入答案,然后单击名为“检查”的按钮检查答案。
fillElements()
函数正在工作,但是当我单击“检查”时,无法从程序中获得响应。到目前为止,我已经整理了许多错误,但这个问题我看不见,也看不懂

<body onload="fillElements()">
<form action="math.html">
<ul>
    <li id="num"> </li>
    <li> +</li>
    <li id="num2"> </li>
    <li> =</li>
    <li><input type="text" name="answer" id="answer" /></li>
</ul>   
<button type="button" onclick="validate()">Check</button>
</form>
<script src="javaScript/math.JS"></script>

</body>

您必须获得要比较的输入的
值,而不是
输入本身。
因此,请替换以下内容

var userAnswer= number(document.getElementById('answer'));


您必须获得要比较的输入的
值,而不是
输入本身。
因此,请替换以下内容

var userAnswer= number(document.getElementById('answer'));

它不是
number()
而是
number()

工作代码

HTML

<form action="math.html">
<ul>
<li id="num"></li>
<li> +</li>
<li id="num2"></li>
<li> =</li>
<li><input type="text" name="answer" id="answer" /></li>
</ul>   
<button type="button" onclick="validate();">Check</button>
</form>
编辑:不要使用

var totalCorrect= 0;
var totalIncorrect= 0;
因为如果你得到一个分数,那么它将打印
无穷
=>
数学四舍五入(1/0)尝试

var totalCorrect= 1;
var totalIncorrect= 1;
它不是
number()
而是
number()

工作代码

HTML

<form action="math.html">
<ul>
<li id="num"></li>
<li> +</li>
<li id="num2"></li>
<li> =</li>
<li><input type="text" name="answer" id="answer" /></li>
</ul>   
<button type="button" onclick="validate();">Check</button>
</form>
编辑:不要使用

var totalCorrect= 0;
var totalIncorrect= 0;
因为如果你得到一个分数,那么它将打印
无穷
=>
数学四舍五入(1/0)尝试

var totalCorrect= 1;
var totalIncorrect= 1;

Javascript区分大小写,因此需要使用
Math.round
,而不是
Math.round

var score = Math.round(totalCorrect/totalIncorrect);
要在以后使用变量,需要在函数外部声明它们:

var rand, rand2;

function fillElements() {
  firstNum = ['0','1','2','3','4','5','6','7','8','9'];
  secondNum = ['0','1','2','3','4','5','6','7','8','9'];
  rand = Math.floor((Math.random()*9)+1);
  rand2= Math.floor((Math.random()*9)+1);

  var el= document.getElementById('num');
  el.textContent = firstNum[rand];
  var el2= document.getElementById('num2');
  el2.textContent = secondNum[rand2];
}

要从输入中获取值,需要使用
value
属性。要将其转换为数字,请使用
数字
,而不是
数字

var userAnswer = Number(document.getElementById('answer').value);
要检查答案,请使用之前设置的变量。您尚未创建任何变量
num
num2

if (rand + rand2 === userAnswer) {

Javascript区分大小写,因此需要使用
Math.round
,而不是
Math.round

var score = Math.round(totalCorrect/totalIncorrect);
要在以后使用变量,需要在函数外部声明它们:

var rand, rand2;

function fillElements() {
  firstNum = ['0','1','2','3','4','5','6','7','8','9'];
  secondNum = ['0','1','2','3','4','5','6','7','8','9'];
  rand = Math.floor((Math.random()*9)+1);
  rand2= Math.floor((Math.random()*9)+1);

  var el= document.getElementById('num');
  el.textContent = firstNum[rand];
  var el2= document.getElementById('num2');
  el2.textContent = secondNum[rand2];
}

要从输入中获取值,需要使用
value
属性。要将其转换为数字,请使用
数字
,而不是
数字

var userAnswer = Number(document.getElementById('answer').value);
要检查答案,请使用之前设置的变量。您尚未创建任何变量
num
num2

if (rand + rand2 === userAnswer) {

打开浏览器的javascript控制台,然后再次尝试运行它。对于大多数浏览器,F12键将显示和隐藏控制台。如果您的代码不正确,您将看到错误显示。弹出浏览器的javascript控制台,然后再次尝试运行。对于大多数浏览器,F12键将显示和隐藏控制台。如果您的代码不正确,将显示错误。谢谢!,我不知道。我在语句末尾添加了.value,代码仍然无法执行。我忍不住想可能是我的html方面出了问题。我可以刷新页面并用新的数字填充“num”和“num2”元素,但我无法让算法工作,或者让我的函数validate()工作。它不是
number()
它是
number()
我假设
number
是他的自定义函数@蒂姆·柯林斯。如果这是正确答案,请选择它谢谢!,我不知道。我在语句末尾添加了.value,代码仍然无法执行。我忍不住想可能是我的html方面出了问题。我可以刷新页面并用新的数字填充“num”和“num2”元素,但我无法让算法工作,或者让我的函数validate()工作。它不是
number()
它是
number()
我假设
number
是他的自定义函数@蒂姆·柯林斯。如果这是正确答案,请选择它。非常感谢!。。。。我唯一需要更改的是window.onload=function(){fillElements()}改为window.onload=fillElements();但再次感谢你!非常感谢你!。。。。我唯一需要更改的是window.onload=function(){fillElements()}改为window.onload=fillElements();但再次感谢你!