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

Utilizar for each ao inves do for

Boa tarde, diferente do exemplo dado no video eu estava querendo aplicar com o forEach para fixação, porém ao utilizar na expressao o parametro this.value a expressão não funciona. Quando utilizo no lugar de this.value o parametro campoFiltro.value ele funciona como esperado, o que estou fazendo de errado para não conseguir utilizar o this.value? Segue abaixo o código que estou utilizando com o campoFiltro.value no parametro da expressão (funcionando). Obrigado!

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;
            var expressao = new RegExp(campoFiltro.value, "i");
            if (!expressao.test(nome)){
                paciente.classList.add("invisivel");
            }
            else {
                paciente.classList.remove("invisivel");
            }
        });
    } 
    else {
        pacientes.forEach(function(paciente){
            paciente.classList.remove("invisivel");
        });
    }

});
8 respostas

Oi Henrique tudo bem?

Poderia , por gentileza, colocar a pasta do seu projeto no github para podermos analisar melhor.

Boa noite André, segue link do repositório:

https://github.com/rickmnst/treinoJs

(Espero que tenha feito certo, ainda não peguei para estudar Git. kkk)

Fez certo sim. Já vou analisar seu código.

solução!

O que aconteceu é que dentro de toda função forEach o this é a página html (Window) seria legal mesmo se o this fosse o campoFiltro mas os criadores do JavaScript não progamaram assim.

Espero ter ajudado!!!

Entendi, realmente nesse contexto que estou utilizando parece ser mais interessante o this representando o mesmo valor do campoFiltro. Mas agora compreendi o que estava acontecendo, obrigado pela ajuda André!

Disponha e bons estudos!!!