Montei o laço do filtro com forEach e, por algum motivo ele não funciona. Por outro lado, montando com o for "normal" (assim como foi feito na aula) ele funciona sem problemas, segue abaixo o código que montei com forEach:
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(this.value,"i");
if( !expressao.test(nome) ){
paciente.classList.add("invisivel");
}else{
paciente.classList.remove("invisivel");
}
});
}else{
pacientes.forEach(function(paciente){
paciente.classList.remove("invisivel");
});
}
});
Há algum motivo específico para isso? É algum bug do próprio JS?
Tks
Edit:
Acabei não explicando onde estava o problema exatamente, falha minha, mas segue abaixo:
A questão não chega a ser a listagem, que funciona perfeitamente, mas sim na hora de executar o teste da Expressão Regular if( !expressao.test(nome) ), que quando faço uso dela dentro do forEach retorna true para todos os casos e quando uso no for funciona sem qualquer problema.
O console não traz erro algum pois a listagem é executada e o teste é feito, o problema mesmo fica no retorno do teste que está funcionando de forma diferente dependendo da função que é usada para realizar o loop.