Javascript数组结果返回undefined

时间:2013-03-21 03:27:18

标签: javascript jquery

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

这是我的返回函数的样子

    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);
    }
    }

Here is the full script

非常需要调试帮助。我是新手,所以我猜测有一些关闭,但只要我能得到反馈的结果,我应该没事。

4 个答案:

答案 0 :(得分:1)

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

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

因为当JSFiddle是......时,StackOverflow想要包含代码:

pNumCalc(pNumTrack)

答案 1 :(得分: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);
        }
    }

});

演示:Fiddle

答案 2 :(得分: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);
    }
}

答案 3 :(得分:0)

我必须建议您使用jquery代替。 访问你的小提琴后似乎代码有很多问题。你的问题也不清楚。

例如

  $(".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 >")
            }
        }

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