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

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 に答える
1

引数を受け取るように設定したコードに pNumCalc という関数がありますが、引数を渡すことはありません。引数を使用して結果を pNumGuess 配列に格納しますが、引数が渡されないため、推測は保存されることはなく、ユーザーが提供した回答は undefined になります。

更新されたフィドル: http://jsfiddle.net/dwdX9/2/。これがあなたが実際に望んでいるものにどれだけ近いかはわかりませんが、うまくいけば、正しい軌道に乗ることができます.

JSFiddleが...の場合、StackOverflowはコードを含める必要があるためです。

pNumCalc(pNumTrack)
于 2013-03-21T03:35:53.933 に答える
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 に答える
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 に答える