У меня есть простая функция инициализации, которая создает элемент canvas в теле и должна сохранять его ссылку в переменной.
Я не знаю, что я делаю неправильно, но jQuery не хочет возвращать ссылку :(
Я попытался ссылаться на другие элементы html, такие как тело, но это также не сработало.
Странно то, что если я выполняю $('#Gravity_Canvas')
в chrome debuger, он дает мне ссылку.
Вот код:
function Gravity() {
this.containerRef = null;
this.objGroups = null;
this.objects = new Array();
init();
function init() {
$('body').append('<canvas id="Gravity_Canvas" width="' + window.innerWidth + '" height="' + window.innerHeight + '"> </canvas>');
this.containerRef = $('#Gravity_Canvas'); // Here is the problem
this.objGroups = { 'default': new ObjectGroup() };
}
}
Спасибо за вашу помощь.
Вы можете изменить свой код, как показано ниже. Заметьте, что я ввел "эту" переменную! Это потому, что это внутри инициализации() не относится к тому же объекту, как это внутри гравитации().
function Gravity() {
var that = this;
that.containerRef = null;
that.objGroups = null;
that.objects = new Array();
init();
function init() {
that.containerRef = $('<canvas id="Gravity_Canvas" width="' + window.innerWidth + '" height="' + window.innerHeight + '"> </canvas>');
$('body').append(that.containerRef);
that.objGroups = { 'default': new ObjectGroup() };
}
}
this.containerRef
- это пустой объект jquery?