我正在尝试使用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()函数永远不会被调用。 所以请帮忙。
答案 0 :(得分:1)
您的winList
数组长度为8,索引范围为0 - 7.
您的循环for (var i =0 ; i <= 8;i++)
尝试访问winList[8]
(当i == 8
时),undefined
- 因此当您尝试访问a
时崩溃了脚本} undefined
(winList[i].a
)。
尝试将循环条件更改为以下内容:for (var i = 0 ; i < 8; i++)