1
resposta

Uncaught TypeError

Ao preencher o formulário para inserir um novo paciente na tabela, está aparecendo o seguinte erro no console:

Uncaught TypeError: Cannot read property 'nome' of undefined at montaTr (form.js:45) at HTMLButtonElement. (form.js:15)

Segue o código:

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

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

Oi Lucas, provavelmente o argumento que você ta passando para a função está undefined. O melhor é você ir dando uns console.log para descobrir qual é o lugar que você acha que deveria ter vindo um valor e não veio.