Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uncaught TypeError: Cannot read property 'nome' of undefined at montaTr (form.js:37) at HTMLButtonElement.<anonymous> (form.js:9) montaTr @ form.js:37 (anonymous) @ form.js:9

Mais um erro de indefinido Dessa vez todos tem return, mas msm assim ele encontra o erro em "var nomeTd = montaTd(paciente.nome, "info-nome");"

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(pacienteTr);

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

    tabela.appendChild(pacienteTr);

});



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

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

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

    return td;
}
1 resposta
solução!

Oi Fred, tudo bem?

Veja que na linha 5 você atribuiu a variável paciente a função: var paciente = obtemPacienteDoFormulario(form);. Isso está correto, porém essa variável paciente não foi utilizada em nenhum outro lugar do seu código, ou seja, todas as informações retornadas do paciente não estão sendo utilizadas.

E agora, na linha 6, você declarou uma variável pacienteTr e enviou essa mesma variável para a função montaTr, mas essa variável não tem conteúdo algum, o que você deveria fazer é enviar a variável paciente como parâmetro para a função montaTr, da seguinte forma:

var pacienteTr = montaTr(paciente);

Espero ter ajudado, qualquer outra dúvida estou a disposição, abraços e bons estudos!