Javascript数组结果返回undefined

Javascript array results returning undefined

本文关键字:undefined 返回 结果 数组 Javascript      更新时间:2023-09-26

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

我的返回函数是这样的

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

这是完整的脚本

非常需要调试帮助。我不熟悉这个,所以我猜有很多,但只要我能得到结果反馈,我应该很好。

您在许多地方没有传递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);
        }
    }
});

演示:小提琴

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

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

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

pNumCalc(pNumTrack)

你忘记在使用array之前定义它了。

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

我必须建议您使用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 >")
            }
        }

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