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

this não funciona

Oi, pessoal!

Ao colocar o this no meu código ele não funciona.

pacientes.forEach(paciente => {
    paciente.addEventListener('dblclick', () => {
        this.remove()
    })
});

aparece o seguinte erro:

Uncaught TypeError: this.remove is not a function
    at HTMLTableRowElement.<anonymous>

Então troquei o this pela variável paciente e funcionou

paciente.addEventListener('dblclick', () => {
        paciente.remove()
  })

Alguém me explica pq o this não funcionou?

3 respostas
solução!

Fala Leo. Isso está relacionado com o escopo do this dentro do forEach.

Dá uma olhada aqui nesse link que está bem explicado: https://imasters.com.br/desenvolvimento/escopos-em-javascript

Você poderia ter feito assim também:

pacientes.forEach(paciente => {
    let scope = this;
    paciente.addEventListener('dblclick', (scope) => {
        scope.remove()
    })
});

E aí, alan. Estava pesquisando aqui e isso está relacionado a arrow function elas não tem o this. fiz meus testes aqui e funcionou quando usei uma função anônima.

vlww por tentar ajudar.

Leo eu tive o mesmo problema que o seu! O que você quis dizer quando solucionou usando uma função anônima, eu não entendi, pois você demonstrou o código com função anônima usando a sintaxe ES6, igual eu fiz:

() =>

Eu continuo sem conseguir fazer o código funcionar com o this. O meu deu certo quando usei o event do addEventListener junto com o currentTarget:

let todosPacientes = document.querySelectorAll(".paciente");

todosPacientes.forEach(paciente => {
    paciente.addEventListener("dblclick", (event) => {
        event.currentTarget.remove();
    });
});

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