通过JQuery生成数学测验

时间:2015-02-23 12:42:01

标签: javascript jquery math

我的任务是为我的功课编辑一个基本的数学测验的外部javascript文件(不允许触摸html和css)。我对编程非常陌生,并尝试过这个问题,但它并不起作用。我需要一些帮助,所以提前谢谢。

在这个数学测验中,当用户点击"检查"按钮,将出现一个警告框,告诉用户是否正确或错误地输入了答案,或者您没有输入任何内容'。在用户关闭警报框后,数学操作数将更改为1到10之间的新随机数,从而生成新问题。此处仅使用了附加数学运算符。

我已经尝试了回调'用于在单击警告框按钮后提示生成随机数,以及“如果否则”#39;确定警报框中显示哪些消息。我不知道错误在哪里,或者我是否在第一时间走上了正确的轨道 这是我的小提琴http://jsfiddle.net/15t4g4sk/2/

这是我的jquery

var num1=document.getElementById("number1").value;
var num2=document.getElementById("number2").value;
var total = num1 + num2;
//feedback for click

(文档)$。就绪(函数(){     $('输入[类型="按钮"]&#39)。单击(函数(){

//if user didn't enter any field
if ($(":text") === '') {
    //callback to generate 2 random numbers
        $("button").click(function(){

    //generate a random number range 1 to 9 for number 1 after clicking alert box using callback function
        document.getElementById("number1").innerHTML =
        Math.floor(Math.random() * 10);

    //generate a random number range 1 to 9 for number 2 after clicking alert box using callback function
        document.getElementById("number2").innerHTML =
        Math.floor(Math.random() * 10);

    //alert box feedback
    alert("You have not key in any answer");


    //if user enter a correct answer
    } else if (answer == total) {
    //callback to generate 2 random numbers
        $("button").click(function(){

    //generate a random number range 1 to 9 for number 1 after clicking alert box using callback function
        document.getElementById("number1").innerHTML =
        Math.floor(Math.random() * 10);

    //generate a random number range 1 to 9 for number 2 after clicking alert box using callback function
        document.getElementById("number2").innerHTML =
        Math.floor(Math.random() * 10);

    //alert box feedback before generating random numbers
        alert("You have key in the wrong answer");
        }); 

    //if user enter a wrong answer
    } else {

    //callback to generate 2 random numbers
        $("button").click(function(){

    //generate a random number range 1 to 10 for number 1 after clicking alert box using callback function
        document.getElementById("number1").innerHTML =
        Math.floor(Math.random() * 11);

    //generate a random number range 1 to 10 for number 2 after clicking alert box using callback function
        document.getElementById("number2").innerHTML =
        Math.floor(Math.random() * 11);

    //alert box feedback before generating random numbers
        alert("You have key in the wrong answer");
                                    }); 
});
}});

2 个答案:

答案 0 :(得分:0)

这是您的javascript代码的完全替代。

$(document).ready(function(){
    $('input[type="button"]').click(function(){
            //alert box feedback before generating random numbers
        var num1=parseInt($("#number1").text());
        var num2=parseInt($("#number2").text());
        var total = num1 + num2;
        var answer = parseInt($("input[type='text']").val());

        if ($("input[type='text']").val() === '') {
            alert("You have not key in any answer");
        } else if (answer === total) {
            alert("You have key in the right answer");
        } else {
            alert("You have key in the wrong answer");
        }

        //generate a random number range 1 to 9 for number 1 after clicking alert box using callback function
        $("#number1").innerHTML =
        Math.floor(Math.random() * 10);

        //generate a random number range 1 to 9 for number 2 after clicking alert box using callback function
        $("#number2").innerHTML =
        Math.floor(Math.random() * 10);
    });
});

现场演示here;

注意:

  • 您只需要一个回调/事件处理程序。事件编程的重点在于,您只需要多次定义一个处理程序,而它将被多次调用 - 即。每次发生正确类型的触发事件。这将是您首先注册事件处理程序的类型。

  • 如果您正在使用jquery,请始终如一地使用它 - 在从html查询元素数据时,仅使用jquery选择器($("<your selector"))或仅使用dom函数(例如。queryElementById("<id>">) 。规则的一个例外是性能优化。这不应该是您的普通界面的问题。

  • 注意类型转换的复杂性。从dom读取的所有数据都是字符串(这里简化了一点)。您执行的检查是在数字上。因此,您必须在不同类型之间进行转换(无论如何这都是好的做法)。由于重载(特别是运算符+),js运行时引擎无法推断出实际的内容类型。

答案 1 :(得分:0)

这是最简单的解决方案。所以你很容易理解..

var num1=document.getElementById("number1").value;
var num2=document.getElementById("number2").value;    var total = num1 + num2;    //feedback for click
 $(document).ready(function(){
$("input[type=button]").on("click", function(){
    var num1 = $("#number1").html().trim();
    var num2 = $("#number2").html().trim();
    var sum = parseFloat(num1)+parseFloat(num2);
    var inputsum = $("#sum").val();
    if(sum  == inputsum)
    {
        alert("currect answer");
        $("#number1").html(Math.floor((Math.random() * 10) + 1)); 
        $("#number2").html(Math.floor((Math.random() * 10) + 1)); 
    }
    else{
        alert("wrong answer");
    }
}); });