未捕获的TypeError:无法读取未定义的属性“描述”

时间:2014-12-11 07:58:47

标签: javascript uncaught-typeerror

//updates display       
 function updateDisplay() {
    displayMessage(locations [loclocal].description);
}       

我不知道发生了什么,但我打开了我的代码,我开始收到此错误Uncaught TypeError:无法读取未定义的属性'description'。请帮助......我正在检查我的游戏是否在其到期之前最后一次工作,现在我很紧张,导致它在12小时内到期。其余的代码在我的git https://github.com/rileyjgr/Games上,要看的两件事是gameworking.html和game.js

PLease任何帮助是赞赏idk我做了什么和我吓坏了我找不到错误

2 个答案:

答案 0 :(得分:-1)

这可能是你的问题:

function nextLoc(dir) {
  var newLoc = nav[loclocal][dir];
  if (newLoc >= 0) {
    loclocal = newLoc;
  } else {
    displayMessage("You cannot go that way.");
  }
  disable_btns();
}

您检查以确保newLoc> = 0,但您没有检查它<<<< locations.length。将其更改为:

function nextLoc(dir) {
  var newLoc = nav[loclocal][dir];

  //changed following line:
  if (newLoc >= 0 && newLoc < locations.length) {

    loclocal = newLoc;
  } else {
    displayMessage("You cannot go that way.");
  }
  disable_btns();
}

编辑:问题(带有此错误)是您要将locations数组的元素分配给尚未定义的变量。

var locations = new Array();
locations[0] = loclocal_0;

会将undefined分配给位置[0],因为loclocal_0稍后会在代码中分配。

作为快速解决方案,您可以移动

var locations = new Array();
...
locations[10] = loclocal_10;

下面的

var loclocal_10 = new rooms();
    ...
    loclocal_10.hasItem = false
代码中的

。这可能会揭示其他错误,只是我一眼就注意到的一对:

function rooms()中的

this.toString=this.discription;包含拼写错误。

我建议您浏览代码,并在当前依赖于自动分号插入的每一行的末尾添加分号,并且一致地缩进。

深吸一口气。这是你的第一年,所以你可能不会期望在这一点上编写好的代码,只关注一次一个地解决错误,并记住,为了将来的任务,花一些时间来学习最好的您预先使用的语言练习可以避免将来出现难以跟踪的错误。

Stackoverflow并不适合调试这个规模的整个项目,但我建议如果您需要个性化帮助(并且无法访问校园资源),您可以查看类似的网站instaedu,odesk或自由职业者让某人花时间你的程序需要整理所有的纠结。一对一的时间与某人一起引导你完成你应该做的事情(就像你可能会收到instaedu一样)最适合学习,而自由职业者和odesk可能是有用的,如果你的目标是学习如何写自己编程。

答案 1 :(得分:-1)

万一有人遇到同样的问题。我修好了我的。我还是不知道这个问题是什么意思。但正如哈特所说,有一些拼写错误(阅读困难,我是对吗?)无论如何,我基本上一行一行地复制并粘贴到一个新的文档中并重新阅读所有内容,直到我发现错误。甚至我犯错误的部分:function updateDisplay() { displayMessage(locations [loclocal].description); } 也完全相同..我仍然需要经历并编辑所有内容。