Eiei pessoal,
Preciso de uma ajuda com o meu código.
Realizei uma implementação para realizar a busca com a substring ao invés de utilizar o RegExp.
A ideia era buscar a string que foi digitada no campo de entrada em qualquer parte do nome do paciente e não apenas no inicio, conforme a solução sugerida para o exercício. Não implementei o case insensitive.
Quando eu executo o meu código, ele me mostra a linha do nome do paciente apenas quando a string digitada está no inicio ou no fim do nome do paciente. Entretanto, quando ela está no meio, a linha não é mostrada.
Por exemplo... se eu digito "Tat" ou "ana" na entrada, ele encontra a paciente Tatiana (mantive o html inalterado). Entretanto, quando eu digito "tia", apesar de a expressão do if
if (this.value != expressao) {
pacientes[i].classList.add("invisivel");
}else{
pacientes[i].classList.remove("invisivel");
}
retornar false quando eu imprimo no log do console, a linha da paciente Tatiana não aparece.
Alguém pode me ajudar a entender porque isso está acontecendo?
Segue abaixo o meu código:
var campoFiltro = document.querySelector("#filtrar-tabela");
campoFiltro.addEventListener("input",function(){
var pacientes = document.querySelectorAll(".paciente");
if (campoFiltro.value.length > 0){
for (var i=0; i<pacientes.length; i++){
var nomeTd = pacientes[i].querySelector(".info-nome");
var nomePaciente = nomeTd.textContent;
var tamanhoNome = nomePaciente.length;
var tamanhoCampoFiltro = campoFiltro.value.length;
for (var j=0; j<= (tamanhoNome-tamanhoCampoFiltro); j++ ){
var expressao = nomePaciente.substring(j,(j+tamanhoCampoFiltro));
if (this.value != expressao) {
pacientes[i].classList.add("invisivel");
}else{
pacientes[i].classList.remove("invisivel");
}
}
}
} else{
for (var i=0; i<pacientes.length; i++){
pacientes[i].classList.remove("invisivel");
}
}
});
Obrigada!