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

Filtrar novo paciente

Estou na Aula 8 do curso JavaScript: Programando na linguagem da web, então foi colocado o bloco de código abaixo, porém toda vez que eu adiciono um novo paciente ele não está conseguindo filtrar o nome do novo paciente, apenas dos antigos, eu copiei o código disponível no curso e o erro persiste.

//código do curso

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");
    }
}

});

// Meu código:

/*

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");




    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");
    }

}

}) */

5 respostas

Fala ai Iago, tudo bem? Esse problema pode estar ocorrendo por N motivos, sendo assim, vou lhe pedir um favor.

Compartilha o projeto completo, assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

Certo, está aqui o link: https://drive.google.com/open?id=1I2ZSc4BWSJh6lg_bAYltSiSinmC8nHJI

Muito obrigado.

solução!

Fala Iago, dei uma olhada no projeto, o problema está na função monTR do arquivo form.js, mais especificamente na linha 75 onde você cria a td referente ao nome do paciente:

var nomeTd = montaTD(paciente.nome, "infor-nome");

Repare que na classe você acabou digitando um r à mais sem querer, onde está infor deveria ser apenas info.

Isso porque no filtro você busca as colunas .info-nome.

Tente remover esse r sobrando, ficando:

var nomeTd = montaTD(paciente.nome, "info-nome");

Isso deve resolver o problema.

Espero ter ajudado.

Muito obrigado, fiquei mais de 1 hora procurando onde poderia estar o erro.

Magina Iago, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.