Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Uso do "this" não está funcionando dentro do event listener

Esse código funciona

var filtro = document.querySelector("#filtro");

filtro.addEventListener("input", ()=>{
    console.log(filtro.value)
});

mas se troco para this dá erro undefined

var filtro = document.querySelector("#filtro");

filtro.addEventListener("input", ()=>{
    console.log(this.value)
});
4 respostas

Oi, Lucas, tudo bem?

O seu id #filtro está declarado dessa forma no arquivo .html?

Caso precise, pode colocar os seus arquivos aqui para testar :}

Esse é o trecho do HTML

<section class="container">
    <h2>Meus pacientes</h2>
    <label for="filtro">Filtro: </label>
    <input type="text" name="filtro" id="filtro">
    <table>

Oi, Lucas, ao que me parece os trechos que você compartilhou aqui estão corretos. Você poderia compartilhar o seu arquivo JS completo para podermos testar?

solução

Boa tarde! Tente fazer desta forma:

var filtro = document.querySelector("#filtro");

filtro.addEventListener("input", function() {
    console.log(this.value)
});

Você estava tentando utilizar uma arrow function. Encontrei na MDN (Arrow functions) um trecho que diz que "Uma expressão arrow function possui uma sintaxe mais curta quando comparada a uma expressão de função (function expression) e não tem seu próprio this...". Ou seja, entendo que ela não serve para esta situação, pois o this não vai existir no contexto.