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

Erro na Aula 5 Exercício 6 - Melhorando ainda mais o código

Srs.

Quando melhoro o código colocando as novas funções "" e "montaTr" o seguinte erro acontece quando clico no botão "Adicionar":

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

Meu código 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 pacienteTr = montaTr(paciente);

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

}

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

    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");

    linha 37-->> nomeTd.textContent = paciente.nome;
    pesoTd.textContent = paciente.peso;
    alturaTd.textContent = paciente.altura;
    gorduraTd.textContent = paciente.gordura;
    imcTd.textContent = paciente.imc;

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

    return pacienteTr;
}

Obrigado desde já pessoal!

2 respostas
solução!

Olá Leonardo! O seu problema está na função "obtemPacienteDoFormulario". A mesma não está retornando o objeto do paciente, e portanto ao ser chamada retorna "undefined" para a variável. Adicione a linha "return paciente" no final da função para que o código funcione normalmente:

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

Espero ter ajudado! :)

Valeu Cauê!!! Era isso mesmo obrigado e abraços!