Javascript Typeerror变量未定义。

时间:2014-09-13 12:33:08

标签: javascript json

我正在尝试使用HTML,CSS和Javascript制作一个简单的哑巴tic-tac-toe游戏。

在下面的播放器移动功能中,由于JSON对象中的Typeerror,无法调用ComputerMove函数。

function Mymove(idValue) 
{
 var flag=0;
 var image = document.getElementById(idValue);
 if (image.src.match("blank.png")) {
 image.src = "X.png";
 flag=Check();
 if (flag==1) 
  {
  alert("You Won");
  reset();
  return;
  };
 ComputerMove();
 };
} 
function Check(){
   for (var i =0 ; i <= 8;i++) {
   var image=document.getElementById(winList[i].a);
   if (!image.src.match("blank.png")) {
   if(image.src==document.getElementById(winList[i].b).src && image.src==document.getElementById(winList[i].c).src)
   return 1;
 }
 }

以下是JSON对象: -

var winList =[
    {a:1,b:2,c:3},
    {a:4,b:5,c:6},
    {a:7,b:8,c:9},
    {a:1,b:4,c:7},
    {a:2,b:5,c:8},
    {a:3,b:6,c:9},
    {a:1,b:5,c:9},
    {a:3,b:5,c:7}];

检查功能始终有效,控制台响应为

TypeError: winList[i] is undefined

调试时我发现此错误后,ComputerMove()函数永远不会被调用。 所以请帮忙。

1 个答案:

答案 0 :(得分:1)

您的winList数组长度为8,索引范围为0 - 7.

您的循环for (var i =0 ; i <= 8;i++)尝试访问winList[8](当i == 8时),undefined - 因此当您尝试访问a时崩溃了脚本} undefinedwinList[i].a)。

尝试将循环条件更改为以下内容:for (var i = 0 ; i < 8; i++)