У меня проблема с объектом:

var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
page.innerHTML = (p1_box.x);

При использовании приведенного выше кода на странице отображается 20, как и должно быть, однако, когда я использую этот код:

var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
function test(){
    page.innerHTML = (p1_box.x);
}

(а затем запустить тестовую функцию) не работает. Вместо этого я получаю эту ошибку (в консоли разработчика Chrome :)

Uncaught TypeError: Невозможно прочитать свойство 'x' из неопределенного

Кто-нибудь знает, что я делаю не так? Насколько я могу судить, в этом коде нет ничего плохого, и все же, как мне показывают, он не работает.

[Я включил в этот вопрос тег "scope", так как подумал, что это может иметь к этому какое-то отношение]

РЕДАКТИРОВАТЬ: Я не хотел предоставлять полный код, но, похоже, я это сделаю. Проблема может заключаться только в том, насколько это беспорядочно. Я скопировал код из игры, которую написал на JavaScript, и создаю новую. Так что, если вам интересно, почему так много кода закомментировано, вот почему. Надеюсь, с этим проблема станет очевидной.

Во-первых: вот веб-страница, на которой он загружается: http://oldforgeinn.ddns.net/games/?game=battleship а вот исходный код: http://oldforgeinn.ddns.net/scripts/SO_file.js

И напоминание, что приведенные выше блоки кода являются примерами, а имена функций / переменных не соответствуют фактическим в моем коде.

В этом случае test () будет представлять функцию draw_gui (), а переменная страницы не имеет значения, поскольку суть этого вопроса заключалась в том, почему x не определено, а часть innerHTML предназначена только для визуального подтверждения.

2
Matthew 27 Фев 2018 в 02:51

1 ответ

Лучший ответ

Этот код работает нормально. В остальной части кода должно быть что-то еще, что вы делаете неправильно. Вот фрагмент его работы:

var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
function test(){
    page.innerHTML = (p1_box.x);
}

test();
<div id="example"></div>
4
jas7457 27 Фев 2018 в 02:54