2015-07-12 51 views
1

这是一个数学练习游戏,我正在使用随机函数来改变数学问题数字。用户将在文本框中输入答案,然后通过单击名为“检查”的按钮来检查答案。 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> 

// JavaScript的

var totalCorrect= 0; 
var totalIncorrect= 0; 
var score = math.round(totalCorrect/totalIncorrect); 
var message= 'Congrats!, you scored:' + score + 'percent'; 




function fillElements() { 
    firstNum = ['0','1','2','3','4','5','6','7','8','9']; 
    secondNum = ['0','1','2','3','4','5','6','7','8','9']; 
    var rand= Math.floor((Math.random()*9)+1); 
    var 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]; 

    } 

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

if (num + num2 === userAnswer) { 
    totalCorrect++; 
    alert(message); 
    fillElements(); 
    } 
else { 
    totalIncorrect++; 
     alert(message); 

} 

} 
+1

打开浏览器的javascript控制台并尝试再次运行它。对于大多数浏览器,F12键将显示并隐藏控制台。如果您的代码不正确,您将看到错误。 – kevin628

回答

0

这不是number()它​​

Check here

工作代码...

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> 

的Javascript

window.onload = function(){ 
fillElements(); 
} 


function fillElements() { 
firstNum = ['0','1','2','3','4','5','6','7','8','9']; 
secondNum = ['0','1','2','3','4','5','6','7','8','9']; 
var rand= Math.floor((Math.random()*9)+1); 
var 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]; 

} 


var totalCorrect= 1; 
var totalIncorrect= 1; 

function validate() { 

var userAnswer= Number(document.getElementById('answer').value); 

var num = document.getElementById('num').textContent; 
var num2 = document.getElementById('num2').textContent; 
var valid = Number(num) + Number(num2); 


if (valid === userAnswer) { 
totalCorrect++; 
var score = Math.round(totalCorrect/totalIncorrect); 
var message= 'Congrats!, you scored:' + score + 'percent'; 
alert(message); 
fillElements(); 
}else { 
totalIncorrect++; 

var score = Math.round(totalCorrect/totalIncorrect); 
var message= 'Congrats!, you scored:' + score + 'percent'; 
    alert(message); 

} 

} 

编辑:不要使用

var totalCorrect= 0; 
var totalIncorrect= 0; 

,因为如果你一分,然后将打印infinity =>Math.round(1/0);

var totalCorrect= 1; 
var totalIncorrect= 1; 
+0

非常感谢你!....我唯一需要改变的是window.onload = function(){fillElements()}只是window.onload = fillelements() );但再次感谢你! –

0

你已经获得输入value进行比较,而不是input本身。 所以替换以下

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

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

谢谢!我不知道。我将.value添加到了我的声明的末尾,我的代码仍然不会执行。我不禁会想,也许在我的html方面可能会出现问题。我可以刷新页面,并用新的数字填充“num”和“num2”元素,但我不能让算法工作,或者我的函数validate()工作。 –

+0

它不是'number()'它是'Number()' – Malik

+0

我认为'number'是他的自定义函数,无论如何。 @tim柯林斯。如果这是正确的答案,请选择它 – Bikas

0

JavaScript是情况sensetive,所以你需要使用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属性。将其转换为一个数字,你使用Number,不number

var userAnswer = Number(document.getElementById('answer').value); 

要检查答案,使用您之前设置的变量。您尚未创建任何变量numnum2

if (rand + rand2 === userAnswer) {