Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我很难完成一个简单的JS数学游戏_Javascript_Button_Onclick - Fatal编程技术网

Javascript 我很难完成一个简单的JS数学游戏

Javascript 我很难完成一个简单的JS数学游戏,javascript,button,onclick,Javascript,Button,Onclick,我让onclick函数正常工作,但问题是jQuery由于某种原因对我不起作用,所以我取出了它,但我不知道如何在不使用jQuery的情况下禁用onclick:如何禁用按钮的onclick,并在正确时使其保持禁用状态,在不正确时重置?我还需要让numOne和numTwo重新计算另一个随机数,如果它等于一个禁用按钮的id,那么我猜我已经更改了do while循环,我必须确保numTwo永远不等于numOne,但我不确定如何做到这一切 <!DOCTYPE html> <html>

我让onclick函数正常工作,但问题是jQuery由于某种原因对我不起作用,所以我取出了它,但我不知道如何在不使用jQuery的情况下禁用onclick:如何禁用按钮的onclick,并在正确时使其保持禁用状态,在不正确时重置?我还需要让numOne和numTwo重新计算另一个随机数,如果它等于一个禁用按钮的id,那么我猜我已经更改了do while循环,我必须确保numTwo永远不等于numOne,但我不确定如何做到这一切

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Lemon Squares - Grade 1 Edition</title>
    </head>
    <body id="bodyId">
        <script type="text/javascript">
            var button = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
            var numbers = new Array();  
            for (var i=0; i<16; i++)
            {
                var randomNumber = Math.floor(Math.random()*9);
                numbers[i] = document.createElement("button");
                numbers[i].innerHTML = button[randomNumber];
                numbers[i].setAttribute("type", "button");
                numbers[i].setAttribute("id", button[i]);
                numbers[i].setAttribute("onclick", "onClick('" + button[randomNumber] + "')");
                numbers[i].setAttribute("value", button[randomNumber]);
                document.getElementById("bodyId").appendChild(numbers[i]);
                if (i == 3 || i == 7 || i == 11) 
                {
                document.write("<br>");
                }
            }
            var numOne = (Math.ceil(Math.random()*15)).toString();
            var numTwo = (Math.ceil(Math.random()*15)).toString();
            do
            {
                numTwo = Math.ceil(Math.random()*15).toString();
            }
            while (numTwo == numOne);
            var numberOne = document.getElementById(numOne).value;
            var numberTwo = document.getElementById(numTwo).value;
            var answer = parseInt(numberOne) + parseInt(numberTwo);
            var total = 0
            function onClick(x)
            {
                x = parseInt(x);
                total += x;
                if (total > answer)
                {
                alert("Sorry, try again.")
                total = 0
                }
                else if(total == answer)
                {
                alert("Congratulations, you did it!");
                total = 0
                }        
            }       
            document.write("<br> Pick two numbers that add up to: " + answer);
        </script>       
    </body>
</html>

我认为你走错了方向

游戏的逻辑是如果我理解正确:

pick 1 to nn是所有可用按钮/项目的计数项目数 获取所选项目值的总和并显示给用户 记录并添加用户选择的值,直到达到目标,并以数组形式跟踪用户选择的项目 如果所选项目总和正确,则禁用所选项目,只需将禁用属性添加到按钮项目,并从步骤1中获得,其中n是剩余项目的数量 因此,对于您的问题:

在每个按钮上单击,执行以下步骤:

将值添加到数组中 获取数组中的值之和 把总数和答案比较一下 如果总和小于答案,则不执行任何操作并等待下一次单击 如果总和等于答案 禁用阵列中的按钮 清除所选项目数组 创建一个新答案 如果总和大于答案,请清除所选项目数组并重新开始
我希望这能有所帮助。

谢谢您的意见!今天早上我试图这么做,但是我在向数组中添加值时遇到了麻烦,我在从我的任何按钮点击中获取值时遇到了麻烦。我肯定认为,一旦我越过了那个障碍,我就能完成剩下的工作。不知道我做错了什么。我将在回家后发布一些我尝试使用的代码示例。是的,当我添加jquery时,按钮已经停止响应。所以我把它拿了出来。