2013-03-21 75 views
2

我一直在研究一个简单的数学游戏,并且在游戏结束后得到整体答案结果以返回问题。返回undefined的Javascript数组结果

这是我回报功能是什么样子

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

差不多需要调试的帮助。我对此很感兴趣,所以我猜测这里有一个关闭的问题,但只要我能得到反馈结果,我应该没问题。

回答

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

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

@Asad thanx我改正了它...... – 2013-03-21 03:36:02

+1

如果你看看给定的小提琴中的源代码,你会看到pNumStore已经定义好了。 – syazdani 2013-03-21 03:37:05

1

有一个在你的代码,你已经设置采取的参数调用pNumCalc功能,但你永远传递一个。您使用参数来存储pNumGuess数组中的结果,但由于参数永远不会被传入,猜测永远不会被存储,并且最终会以用户给出的答案作为未定义的。

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

因为StackOverflow的希望被列入时的jsfiddle是代码...:

pNumCalc(pNumTrack) 
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 >") 
      } 
     } 

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