Olá a todos,
No curso o professor usou a função for para varrer todos os pacientes conforme o código abaixo:
var campoFiltro = document.querySelector("#filtrar-tabela");
campoFiltro.addEventListener("input", function() {
var pacientes = document.querySelectorAll(".paciente");
if (this.value.length > 0) {
for (var i = 0; i < pacientes.length; i++) {
var paciente = pacientes[i];
var tdNome = paciente.querySelector(".info-nome");
var nome = tdNome.textContent;
var expressao = new RegExp(this.value, "i");
// Adição aqui
if (expressao.test(nome)) {
paciente.classList.remove("invisivel");
} else {
paciente.classList.add("invisivel");
}
}
} else {
for (var i = 0; i < pacientes.length; i++) {
var paciente = pacientes[i];
paciente.classList.remove("invisivel");
}
}
});
Eu tentei usar a função forEach conforme o código abaixo:
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.remove("invisivel");
}else{
paciente.classList.add("invisivel");
}
});
}else{
pacientes.forEach(function(paciente) {
paciente.classList.remove("invisivel");
});
}
})
Porém a linha
var expressao = new RegExp(this.value, "i");
Não funciona. Para fazer funcionar eu tive que usar:
var expressao = new RegExp(campoFiltro.value, "i");
Por que eu não pude usar o this.value nesse caso?