3
respostas

Calculo do imc não é preenchido na tabela

Pessoal, estou com uma dúvida, se eu adiciono manualmente um paciente ele realiza o cálculo do imc. Mas se adiciono via requisição ele não está preenchendo.

Esse é o meu buscar-paciente.js

var botaoAdicionar = document.querySelector("#buscar-paciente") ;
botaoAdicionar.addEventListener("click", function(){
    console.log("Buscar pacientes");
    var xhr = new XMLHttpRequest();
xhr.open("GET","https://api-pacientes.herokuapp.com/pacientes");
xhr.addEventListener("load", function(){
    // console.log(xhr.responseText);
    var resposta = xhr.responseText;
    var pacientes = JSON.parse(resposta);
    pacientes.forEach(function(paciente) {
        adicionaPacienteNaTabela(paciente);
    });
});
xhr.send();
});

form.js

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event){
    event.preventDefault();
    var form = document.querySelector("#form-adiciona");
    var paciente = obtemPacienteDoFormulario(form);
    var erros = validaPaciente(paciente);
    console.log(erros);
    if (erros.length > 0) {
        exibeMensagensDeErro(erros);
        return;
    }
    adicionaPacienteNaTabela(paciente);
    form.reset();
    var mensagensErro = document.querySelector("#mensagens-erro");
    mensagensErro.innerHTML = "";
});

//Função que adiciona na tabela
function adicionaPacienteNaTabela(paciente){
    var pacienteTr = montaTr(paciente);
    var tabela = document.querySelector("#tabela-pacientes");
    tabela.appendChild(pacienteTr);
}

//Função que monta a tabela
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.icm, "info-imc"));
 return pacienteTr;
}
3 respostas

Oi, Lina, tudo bem?

Fui testar o seu código com o arquivo html do projeto do curso, não sei se a sua id #buscar-pacientes está igual no html, quando testei aqui apresentou o erro no console do navegador. A declaração da id está igual em buscar-pacientes.js? Consertando isso, obtive sucesso com a busca.

Opa, desculpa a demora na reposta, mas esta sim

<button id="buscar-paciente" class="botao bto-principal">Buscar Paciente</button>
var botaoAdicionar = document.querySelector("#buscar-paciente") ;
botaoAdicionar.addEventListener("click", function(){
    console.log("Buscar pacientes");
    var xhr = new XMLHttpRequest();

xhr.open("GET","https://api-pacientes.herokuapp.com/pacientes");
xhr.addEventListener("load", function(){
    // console.log(xhr.responseText);
    var resposta = xhr.responseText;

    var pacientes = JSON.parse(resposta);
    pacientes.forEach(function(paciente) {
        adicionaPacienteNaTabela(paciente);
    });

});

xhr.send();

});

O meu não gera erro.

Oi, Lina, tudo bem?

Na linha: pacienteTr.appendChild(montaTd(paciente.imc, "info-imc")); foi um detalhe que passou despercebido para mim também. Você declarou icm ao invés imc, assim, o imc será calculado. Testa e me fala se deu certo.