2014-12-11 2 views
-2
//updates display  
function updateDisplay() { 
    displayMessage(locations [loclocal].description); 
}  

Я понятия не имею, что произошло, но я открыл свой код, и я начал получать эту ошибку неперехваченного TypeError: Не удается прочитать свойство «описание» неопределенных. PLease help ... Я проверял, не работает ли моя игра в последний раз до ее появления, и теперь я нервничаю, вызывая ее из-за 12 часов занятий. остальная часть кода находится на моем мерзавца https://github.com/rileyjgr/Games две вещи, чтобы посмотреть на это gameworking.html и game.jsUncaught TypeError: Не удается прочитать свойство «Описание» неопределенного

Пожалуйста, любая помощь приветствуется ИДК, что я сделал, и им волнуюсь я не могу найти ошибку

+1

Сделайте 'console.log'' location' и 'loclocal'. Если это не сразу поможет, используйте 'debugger;'. – Bergi

+0

Im студент первого курса comp sci. мы еще не узнали об этом. вы можете объяснить –

+0

[Нет] (http://stackoverflow.com/q/988363/1048572) – Bergi

ответ

-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 могут иметь ограниченную полезность, если ваша цель - научиться писать программы сами.

+0

Просто попробовал это. независимо от того, что я делаю, он все еще говорит, что описание не определено. –

+0

Я только что отредактировал свой ответ на адрес * this * bug более непосредственно. –

+0

эй спасибо. я просмотрел весь свой код и отредактировал его. занял около часа большую боль в заднице, но эй это сработало. спасибо –

-1

В случае, если у кого-то была такая же проблема. Я исправил мой. Я все еще не знаю, что означала проблема. но, как сказал Харт, были некоторые орфографические ошибки (дислексия op Am i right?), так или иначе, я в основном проходил по строкам, копировал и вставлял в новый документ и читал все десятки раз, пока не нашел ошибки. Даже в той части, где у меня была ошибка: function updateDisplay() { displayMessage(locations [loclocal].description); } точно такая же ..я все еще должен был пройти и редактировать все.

+0

Ошибка, которую вы получили («невозможно прочитать свойство« неопределенное ») относится к тому факту, что местоположения [loclocal] не определены во время доступа. Более конкретно, местоположения [0] -локаций [10] были явно заданы 'undefined' в строках, определенных в моем ответе: ' locations [0] = loclocal_0 ... ' Поскольку loclocal_0 не определен в этой точке кода , местоположения [0] теперь 'undefined'. Когда вы пытаетесь получить доступ к свойству 'description' 'undefined' (или любому свойству' undefined'), вы получаете TypeError с этой обратной связью. –

Смежные вопросы