Javascript Typeerror变量未定义

Javascript Typerror variable undefined.

本文关键字:未定义 变量 Typeerror Javascript      更新时间:2023-09-26

我正在尝试使用HTML、CSS和Javascript制作一个简单的愚蠢的井字游戏。

在下面的播放器移动函数中,由于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()函数永远不会被调用。所以请帮忙。

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

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

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