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

form.js:42 Uncaught TypeError: Cannot read properties of undefined (reading 'nome') at montaTr (form.js:42) at HTMLButtonElement.<anonymous>

Olá,

Estou fazendo o curso e criando o projeto de acordo com os vídeos, porém na última aula de boas técnicas começa a dar problema. Quando crio a função "montaTr()" o código para de funcionar e se apresenta o seguinte erro: "form.js:42 Uncaught TypeError: Cannot read properties of undefined (reading 'nome') at montaTr (form.js:42) at HTMLButtonElement. '

O erro persiste mesmo se eu comente a linha incorreta e aí passa a apontar o mesmo erro para a linha seguinte que trata o peso.

Segue o código:

`var botaoAdicionar = document.querySelector("#adicionar-paciente");

botaoAdicionar.addEventListener("click", function(event){ event.preventDefault(); //alert('testando botão');

var form = document.querySelector("#form-adiciona");
//Pegando informações do formulário
var paciente = obtemPacienteFormulario(form);

//Cria a tr e td de cada paciente
var pacienteTr = montaTr(paciente);

//adiciona paciente na tabela
var tabela = document.querySelector("#tabela-pacientes");

tabela.appendChild(pacienteTr);

});

function obtemPacienteFormulario(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");


nomeTd.textContent = paciente.nome;
pesoTd.textContent = paciente.peso;
alturaTd.textContent = paciente.altura;
gorduraTd.textContent = paciente.gordura;
imcTd.textContent = paciente.imc;

//passando as novas colunas para dentro da nova linha
pacienteTr.appendChild(nomeTd);
pacienteTr.appendChild(pesoTd);
pacienteTr.appendChild(alturaTd);
pacienteTr.appendChild(gorduraTd);
pacienteTr.appendChild(imcTd);

return pacienteTr;

}`

Fico no aguardo de um auxilio.
2 respostas
solução!

Olá Priscila, tudo bom? No seu código, ta faltando retornar o paciente

function obtemPacienteFormulario(form) {
   // montando o objeto paciente
    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)
    }
    // agora retorna o paciente para ser usado em outra funcao
    return paciente; 
}

Diego, tudo bem?

Muitíssimo obrigada! Algo extremamente simples, mas que passou batido nas tantas revisões.