2015-07-12 26 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) {