*O filtro funciona quando é com os nomes adicionados pelo formulário ou se eu coloquei direto no HTML, mas esses novos que vem como tipo JSON ele não consegue filtrar *
Arquivo javascript do filtro:
var filtro = document.querySelector("#filtro-tabela");
filtro.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 nomeTd = paciente.querySelector(".nome-tabela");
var nome = nomeTd.textContent;
var expressao = new RegExp(this.value, "i");
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");
}
}
});
Arquivo javascript do formulário :
document.querySelector("index_imc.html");
var pacientes = document.querySelector(".paciente");
var botao = document.querySelector(".botao-enviar");
botao.addEventListener("click", function(event){
event.preventDefault();
var form = document.querySelector("#formulario-tabela");
var paciente = obtemPacienteDoFormulario(form);
var erros = validaPaciente(paciente);
if (erros.length> 0){
exibeMensagemDeErro(erros);
return;
}
adicionarPacientesNaTabela(paciente);
form.reset();
var mensagemErro = document.querySelector("#mensagem-erro")
mensagemErro.innerHTML="";
});
function exibeMensagemDeErro(erros){
var ul = document.querySelector("#mensagem-erro");
ul . innerHTML="";
erros.forEach(function(erro) {
var li = document.createElement("li");
li.textContent = erro;
ul.appendChild(li);
});
}
function obtemPacienteDoFormulario(form) {
var paciente = {
nome: form.nome.value,
peso: form.peso.value,
altura: form.altura.value,
imc: calcularImc(form.altura.value, form.peso.value),
}
return paciente;
}
function criarTd(dado, classe){
var criarTd = document.createElement("td");
criarTd.textContent = dado;
criarTd.classList.add ("classe");
return criarTd;
}
function criarTr(paciente){
var pacienteTr = document.createElement("tr");
pacienteTr.classList.add("paciente");
pacienteTr.appendChild(criarTd(paciente.nome, "nome"));
pacienteTr.appendChild(criarTd(paciente.altura, "altura"));
pacienteTr.appendChild(criarTd(paciente.peso, "peso"));
pacienteTr.appendChild(criarTd(paciente.imc, "info_imc"));
return pacienteTr;
}
function adicionarPacientesNaTabela(paciente){
var dadosDoPaciente = criarTr(paciente);
var tabela = document.querySelector("#tabela-corpo");
tabela.appendChild(dadosDoPaciente);
}
function validaPaciente(paciente){
var mensagemDeErros = [];
if(paciente.nome.length == 0 && paciente.peso.length == 0 && paciente.altura.length == 0){
mensagemDeErros.push("Por favor, insira as informações do paciente.");
return mensagemDeErros;
}
if(!pesoEhValido(paciente.peso)){
mensagemDeErros.push("Peso é inválido ");
}
if(!alturaEhValida(paciente.altura)){
mensagemDeErros.push(" Altura é inválida");
}
if(paciente.nome.length == 0 ){
mensagemDeErros.push("Nome em branco.")
}
if(paciente.peso.length == 0 ){
mensagemDeErros.push("Peso em branco.")
}
if(paciente.altura.length == 0){
mensagemDeErros.push("Altura em branco.")
}
return mensagemDeErros;
}
Arquivo javascript para Buscar pacientes:
var buscarPaciente = document.querySelector("#buscar-paciente");
buscarPaciente.addEventListener("click", function(){
var xhr = new XMLHttpRequest();
xhr.open("GET","https://api-pacientes.herokuapp.com/pacientes" );
xhr.addEventListener("load", function(){
var pacientes = JSON.parse(xhr.responseText);
pacientes.forEach(function(paciente){
adicionarPacientesNaTabela(paciente);
});
});
xhr.send();
});
Desde já agradeço a ajuda :)