Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

TypeError: Cannot read property 'nextFrame' of undefined

Olá pessoal,

o código demonstrado no gabarito não funciona.

function createSprite(selector) {

    var $el = $(selector);

    var frames = [
        'frame1', 'frame2', 'frame3', 'frame4', 'frame5',
        'frame6', 'frame7', 'frame8', 'frame9'
    ];

    var current = 0;

    var last = frames.length - 1;

    $el.addClass(frames[current]);

    function nextFrame() {

        $el.removeClass(frames[current])
            .addClass(frames[++current]);
    }
}

Tentei de outras formas antes de consultar o gabarito, mas tive o mesmo erro de TypeError: undefined:

function createSprite(seletor) {

    var elemento = document.querySelector(seletor);


    var frames = ['frame1', 'frame2', 'frame3', 'frame4', 'frame5', 'frame6', 'frame7', 'frame8', 'frame9'];

    var atual = 0;
    var ultimo = frames.length - 1; 

    elemento.classList.add(frames[atual]);

    function nextFrame() {
        elemento.classList.remove(frames[atual]);
        elemento.classList.add(frames[++atual]);
    }
}

E quando fui checar o gabarito para ver onde estava errando, o código também apresenta o mesmo erro. A função createSprite retorna undefined . Porque isso acontece?

2 respostas
solução!

Oi Barbara,

É que faltou adicionar o return na function createSprite:

return {
    nextFrame: nextFrame
};

Isso será mostrado no próximo vídeo(Gabarito - PARTE 2 - melhorando a legibilidade).

Bons estudos!

Obrigada.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software