4
respostas

Problema com forEach

Olá,

No meu arquivo filtra.js, tentei utilizar o forEach e o resultado foi diferetne do for tradicional. Qual problema pode ter ocorrido? segue o código:

var campoFiltro = document.querySelector("#filtrar-tabela");

campoFiltro.addEventListener("input", function(){    
    var pacientes = document.querySelectorAll(".paciente");

    if(this.value.length > 0){

        pacientes.forEach(function(paciente){
            var tdNome  = paciente.querySelector(".info-nome");
            var nome = tdNome.textContent;

            if(nome != this.value){
                console.log("add");
                paciente.classList.add("invisivel");                

            }else{
                console.log("removeu");
                paciente.classList.remove("invisivel");                
            }

        })
    }else{
        pacientes.forEach(function(pac){
            pac.classList.remove("invisivel");
        })

    }
});
4 respostas

Fala aí Rafael, beleza? Como faz tempo que fiz o curso não lembro muito a funcionalidade, o que você fez foi a parte de busca? Onde você digita o nome do paciente e verifica se ele está na tabela?

Qual foi o comportamento que você obteve? O que mudou?

Olhando assim por cima, parece tudo certo no código.

Fico no aguardo.

Opa, beleza Matheus e vc?

Então, ele não simplesmente não encontra o paciente, apaguei apenas a linha do forEach e troquei pelo for tradicional e funcionou.

Certo, precisamos entender o que pode estar errado, faz um console.log em:

console.log(pacientes)

Antes do if(this.value.length > 0), para vermos se ele realmente encontrou os pacientes.

Dai, para cada iteração dentro do forEach faz o console.log do paciente atual:

pacientes.forEach(function(paciente){
    console.log(paciente)
// ....

Vamos ver

Encontrou... antes e depois também.

Colocou a classe invisível em todos, mas ao terminar de completar um nome que existe (por exemplo Paulo), ele não cai no Else que remove a classe invisível.

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