jQuery не возвращает ссылку на простой элемент canvas

0

У меня есть простая функция инициализации, которая создает элемент 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() };
    }
}

Спасибо за вашу помощь.

  • 1
    Итак, this.containerRef - это пустой объект jquery?
  • 0
    Нет, сначала он имеет значение NULL. Затем в функции init в нем должна быть сохранена ссылка на элемент canvas. Так что это никогда не пустой объект jQuery
Теги:

1 ответ

1
Лучший ответ

Вы можете изменить свой код, как показано ниже. Заметьте, что я ввел "эту" переменную! Это потому, что это внутри инициализации() не относится к тому же объекту, как это внутри гравитации().

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() };
    }
}
  • 0
    Да, теперь это работает! Вы мой герой большое спасибо! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню