2

我一直在做一个简单的数学游戏,在游戏结束后让整体答案结果返回时遇到问题。

这是我的返回函数的样子

    function pShowResults() {
    var pNumResults = document.getElementById("results");
    for (var i = 0; i <= 10; i++) {
        pNumStore.push(pNumGuess[i]);
        var pNumTable = document.createElement("div");
        pNumTable.innerHTML = (pNumGuess[i]);
        pNumResults.appendChild(pNumTable);
    }
    }

这是完整的脚本

非常需要调试帮助。我是新手,所以我猜有很多问题,但只要我能得到反馈的结果,我应该没问题。

4

4 回答 4

1

在您的代码中有一个名为 pNumCalc 的函数,您已将其设置为接受一个参数,但您从不传入一个。您使用该参数将结果存储在 pNumGuess 数组中,但由于该参数从未传入,因此猜测永远不会存储,您最终会得到未定义的用户给出的答案。

更新小提琴:http: //jsfiddle.net/dwdX9/2/。不确定这与您实际想要的有多接近,但希望它能让您走上正确的轨道。

因为 StackOverflow 希望在 JSFiddle 为...时包含代码:

pNumCalc(pNumTrack)
于 2013-03-21T03:35:53.933 回答
1

你没有x在很多地方传递价值

$(document).ready(function () {

    //declare arrays and variables for use below
    var pNum1 = [];
    var pNum2 = [];
    var pNumAns = [];
    var pNumGuess = [];
    var pNumStore = [];
    var pNumCarry = 0;
    var pNumTrack = 0;
    var pNumMessageRight = ['Awesome Job!', 'Correct!', 'Great Job!'];
    var pNumMessageWrong = ['Oh No! That Was Wrong!', 'Incorrect!', 'That\'s Wrong'];

    $(".Play").click(function () {
        $("#popup").attr("class", "on");
        pNumTrack = 0;
         pNumGen(pNumTrack);
    });

    $(".pNumSubmit").click(function () {
        pNumCalc(pNumTrack-1);
    });

    $(".pNumNext").click(function () {
        pNumGen(pNumTrack);
    });

    function pNumGen(x) {
        pNum1[x] = (Math.round(Math.random() * 51));
        pNum2[x] = (Math.round(Math.random() * 51));
        pNumAns[x] = pNum1[x] + pNum2[x];
        $(".pNum1").html(pNum1[x]);
        $(".pNum2").html(pNum2[x]);
        $(".pNumGuess").val("");
        $(".pNum1").html(pNumTrack[x]);
        if (pNumTrack == 2) {
            $(".pNumNext").html("");
            $(".pNumSubmit").html("Close");
            pShowResults();
        }
        pNumTrack++;
    }

    function pNumCalc(x) {
        pNumGuess[x] = $(".pNumGuess").val();
        if (pNumGuess[x] == pNumAns[x]) {
            $(".message").html(pNumMessageRight[Math.floor(Math.random() * pNumMessageRight.length)]);
            $(".pNumNext").html("Next Question >")
        } else {
            $(".message").html(pNumMessageWrong[Math.floor(Math.random() * pNumMessageWrong.length)]);
            $(".pNumNext").html("Maybe The Next Question >")
        }
    }

    function pShowResults() {
        var pNumResults = document.getElementById("results");
        for (var i = 0; i < pNumGuess.length; i++) {
            pNumStore.push(pNumGuess[i]);
            var pNumTable = document.createElement("div");
            pNumTable.innerHTML = (pNumGuess[i]);
            pNumResults.appendChild(pNumTable);
        }
    }

});

演示:小提琴

于 2013-03-21T03:42:44.467 回答
0

您忘记在使用之前定义数组。

function pShowResults() {
    var pNumStore = new Array();
    var pNumResults = document.getElementById("results");
    for (var i = 0; i <= 10; i++) {
        pNumStore.push(pNumGuess[i]);
        var pNumTable = document.createElement("div");
        pNumTable.innerHTML = (pNumGuess[i]);
        pNumResults.appendChild(pNumTable);
    }
}
于 2013-03-21T03:34:10.913 回答
0

我必须建议您改用 jquery。访问您的 Fiddle 后,代码似乎存在很多问题。而且你的问题也不清楚。

例如

  $(".pNumSubmit").click(function () {
//why x value not passed?
 pNumCalc();
        });



        function pNumCalc(x) {
            pNumGuess[x] = $(".pNumGuess").val();
            if (pNumGuess[x] == pNumAns[x]) {
                $(".message").html(pNumMessageRight[Math.floor(Math.random() * pNumMessageRight.length)]);
                $(".pNumNext").html("Next Question >")
            } else {
                $(".message").html(pNumMessageWrong[Math.floor(Math.random() * pNumMessageWrong.length)]);
                $(".pNumNext").html("Maybe The Next Question >")
            }
        }

请清除返回未定义的数组,以便其他人可以帮助您。

于 2013-03-21T03:44:12.243 回答