【问题标题】:Javascript Typerror variable undefined.Javascript Typeerror 变量未定义。
【发布时间】:2014-11-07 12:24:40
【问题描述】:

我正在尝试使用 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() 函数永远不会被调用。 所以请帮忙。

【问题讨论】:

  • 如果flag1,则ComputeMove() 不会被执行。这样好吗?

标签: javascript json


【解决方案1】:

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

您的循环for (var i =0 ; i &lt;= 8;i++) 尝试访问winList[8](当i == 8),即undefined - 因此当您尝试访问aa 时脚本崩溃undefined (winList[i].a) .

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

【讨论】:

  • 还需要 3 分钟。我会尽快完成的。 :)
猜你喜欢
  • 1970-01-01
  • 2021-03-17
  • 2015-07-25
  • 2022-06-16
  • 2021-08-05
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多