Boa noite. Estou com uma dúvida.. Quando utilizo o forEach não ocorre a filtragem, e depois de debugar eu acho que encontrei o motivo. Ele dá undefined ao ler o "this.value", porém se eu coloco no lugar do this.value 'campoFiltro.value" ele reconhece o valor que está sendo digitado no input. Também se eu não utilizar o ForEach e sim o for, ele funciona normalmente. Qual seria o motivo? Segue abaixo o código e agradeço a atenção.
var campoFiltro = document.querySelector('#filtro');
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');
console.log('>>> ' + this.value);
if(!expressao.test(nome)) {
paciente.classList.add("invisivel");
}
else {
paciente.classList.remove("invisivel");
}
});
}
else {
for(var i = 0; i < pacientes.length; i++) {
var paciente = pacientes[i];
paciente.classList.remove("invisivel");
}
}
});