js математическая проверка ответа

Я пытаюсь создать случайную задачу сложения, на которую должен ответить пользователь. У меня сгенерированы случайные числа, но мне трудно принять ответ пользователя и проверить его. Пожалуйста помоги! Мой код ниже:

js: функция randomNum () {var num1 = document.getElementById ("num1"); var num2 = document.getElementById ("число2"); num1.innerHTML = Math.floor ((Math.random () * 50) + 1); num2.innerHTML = Math.floor ((Math.random () * 50) + 1);

function checkMath() {
    var num1 = parseInt((document.getElementById("num1")), 10);
    var num2 = parseInt((document.getElementById("num2")), 10);
    ans = document.forms.problem.answer;
    ans.value = num1 + num2;
    if (ans == correct) {
        alert("woot");
    } else {
        alert("nope");
    }
}

}

html:

<body onLoad="randomNum();">
<table>
<tr>
<td>
<div id="problem">
<div>
<p id="num1">00</p>
<div class="plus">+</div>
<p id="num2">00</p>
<hr>
<form id="problem"><p><input id="answer" value=""></p>
<input type="button" onclick="checkMath();" value="Check Answer"></form>
</div>
</div>
</td>

person ColonelStroganoff    schedule 02.12.2013    source источник
comment
Это выглядит неправильно: ans = parseInt(document.forms.problem.answer), 10;   -  person Shomz    schedule 02.12.2013
comment
да, я немного поигрался с ним в JSFiddle, и это помогло выявить некоторые проблемы. Я обновил код ...   -  person ColonelStroganoff    schedule 02.12.2013
comment
Хорошо, не могли бы вы поделиться своим jsfiddle и рассказать, в чем проблема?   -  person Shomz    schedule 02.12.2013


Ответы (2)


Есть несколько проблем с вашим кодом.

Во-первых, вы фактически не проверяете значение ответа, вы его заменяете.

Во-вторых, вы используете элемент DOM в качестве аргумента parseInt вместо строки (вам не хватало innerHTML).

Правильный javascript должен быть:

function randomNum() {
    var num1 = document.getElementById("num1");
    var num2 = document.getElementById("num2");
    num1.innerHTML = Math.floor(Math.random()*50+1);
    num2.innerHTML = Math.floor(Math.random()*50+1);
}

function checkMath() {
    var num1 = parseInt(document.getElementById("num1").innerHTML, 10);
    var num2 = parseInt(document.getElementById("num2").innerHTML, 10);
    var answer = parseInt(document.getElementById("answer").value, 10);
    if (answer === num1 + num2) {
        alert("woot");
    } else {
        alert(answer + " is incorrect, correct answer is " + (num1+ num2));
    }
    document.getElementById("answer").value="";
    randomNum();
}

Я создал для вас jsfiddle, проверьте здесь: http://jsfiddle.net/883fF/

Ваш HTML немного отличается от двух, например, вы открываете тег таблицы, но никогда не закрываете его и т. Д. Я надеюсь, что это поможет.

person Rick Deckard    schedule 02.12.2013
comment
Спасибо, Рик, ты классный! - person ColonelStroganoff; 02.12.2013

Код выглядит неплохо, но вы забыли закрыть свои JS-функции.

function randomNum() {
var num1=document.getElementById("num1");
var num2=document.getElementById("num2");
num1.innerHTML=Math.floor((Math.random()*50)+1);
num2.innerHTML=Math.floor((Math.random()*50)+1);
}

function checkMath() {
var num1=new Number(document.getElementById("num1").innerHTML);
var num2=new Number(document.getElementById("num2").innerHTML);
ans=document.getElementById("answer").value;
   if (ans==(num1+num2))
   {
       alert('Woot!');
   }

   else
   {
       alert('Nope');
   }
}
person Minifyre    schedule 02.12.2013