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

Quando adiciono novo paciente na lista, ele não é filtrado.

Ao adicionar novo paciente na lista, e digitar um nome diferente no input de filtragem, ele continua aparecendo e a classe "esconde" não é adicionado nele, como corrigir?

var campoFiltro = document.querySelector("#filtrar-tabela");

campoFiltro.addEventListener("input", function () {
    console.log(this.value);
    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"); // case insensitive
            if (!expressao.test(nome)) {
                paciente.classList.add("esconde");
            } else {
                paciente.classList.remove("esconde");
            }
        }
    } else {
        for (var i = 0; i < pacientes.length; i++) {
            var paciente = pacientes[i];
            paciente.classList.remove("esconde");
        }
    }
});
2 respostas
solução!

Oi Hélio, tudo certo?

Você está adicionando o paciente diretamente com essa classe paciente? Você pode fazer um teste e dar um console.log(pacientes) para ver se os elementos novos estão retornando da maneira correta.

Se puder, mande seus outros códigos aqui também para eu conseguir te auxiliar melhor =) Abraços e bons estudos!

Descobri! Errei na função "montaTR":

function montaTr(paciente) {
    var pacienteTr = document.createElement("tr");
**    pacienteTr.classList.add(".paciente");
**
    pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));

    return pacienteTr;
}

Estava dando classList.add(".paciente"), foi só tirar o ponto que resolveu :)