1
resposta

Não consegui que o IMC calculasse direto

Não aparece nenhuma mensagem de erro. Alguém pode me ajudar?


var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event) {
    event.preventDefault();

    var form = document.querySelector("#form-adiciona");


    var paciente = obtemPacienteDoFormulario(form);

    var pacienteTr = montaTr (paciente);

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

    tabela.appendChild(pacienteTr);

    form.reset();
});

function obtemPacienteDoFormulario (form){

    var paciente = {
        nome:form.nome.value,
        peso:form.peso.value, 
        altura: form.altura.value,
        gordura:form.gordura.value,
        ímc:calculaImc(form.peso.value, form.altura.value)
    }

    return paciente;
}

function montaTr(paciente){
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

        var nomeTd = document.createElement("td");
        var pesoTd = document.createElement("td");
        var alturaTd = document.createElement("td");
        var gorduraTd = document.createElement("td");
        var imcTd = document.createElement("td");

        pacienteTr.appendChild(nomeTd);
        pacienteTr.appendChild(pesoTd);
        pacienteTr.appendChild(alturaTd);
        pacienteTr.appendChild(gorduraTd);
        pacienteTr.appendChild(imcTd);

        return pacienteTr;
    }


function montaTd(dado, classe){
    var td = document.createElement ("td");   
    td.textContent = dado;
    td.classList.add(classe);

    return td;
}

  function montaTr(paciente){
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    var nomeTd= montaTd(paciente.nome, "info-nome");
    var pesoTd= montaTd (paciente.peso,"info-peso");
    var alturaTd = montaTd (paciente.altura, "info-altura");
    var gorduraTd = montaTd (paciente.gordura,"info-gordura");
    var imcTd = montaTd(paciente.imc, "info-imc");

    pacienteTr.appendChild(nomeTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);

    return pacienteTr
}
1 resposta

Olá Ricardo, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O IMC do novo paciente adicionado pelo formulário não está sendo calculado devido a um erro de digitação no nome do atributo imc. O nome do atributo foi declarado como ímc (com acento no i) o correto será imc (sem o acento no i).

Para corrigir, acesse o arquivo forms.js localize a função obtemPacienteDoFormulario e atributo imc na variável paciente, modifique o nome do atributo ímc (com acento no i) para imc (sem o acento no i). A função obtemPacienteDoFormulario deverá ficar como apresentada abaixo.

function obtemPacienteDoFormulario (form){

    var paciente = {
        nome:form.nome.value,
        peso:form.peso.value, 
        altura: form.altura.value,
        gordura:form.gordura.value,
        imc:calculaImc(form.peso.value, form.altura.value)
    }

    return paciente;
}

Salve o arquivo forms.js. Abra o arquivo index.html no navegador e adicione um novo paciente verificando se obtêm êxito.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!