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

Uncaught ReferenceError: gordura is not defined

Ao clicar no botão logo apos preencher o formulário ele retorna o seguinte erro: Uncaught ReferenceError: gordura is not defined

var botao = document.querySelector("#btn");
botao.addEventListener("click", function(event){
  event.preventDefault();  
  var form = document.querySelector("#form-adc");

  // chama funcao form
  obtemInformacaoForm(form);

    //criando tag html
    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");

 // coloca testo do form na td criada
    nomeTd.textContent =     nome;
    pesoTd.textContent =     peso;
    alturaTd.textContent =   altura;
    gorduraTd.textContent =  gordura;
    imcTd.textContent =      calculaImc(peso,altura);

    // adiciona as td dentro da tr
    pacienteTr.appendChild(nomeTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);

    //adiciona tr dentro do tbody
      var tabela = document.querySelector("#tabela-pacientes");
      tabela.appendChild(pacienteTr);
});

function obtemInformacaoForm(form){
  // pegando dados do form

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

}
5 respostas

Pode postar o código do FORM ?

    <form id="form-adc">
            <div class="">
                <label>Nome</label>
                <input id="nome" type="text" name="name" placeholder="Digite o nome do seu paciente" value="" class="campo">
            </div><br>
            <div class="">
                <label>Altura</label>
                <input id="altura" type="text" name="altura" placeholder="Digite o altura do seu paciente" value="" class="campo">
            </div><br>
            <div class="">
                <label>Peso</label>
                <input id="peso" type="text" name="peso" placeholder="Digite o peso do seu paciente" value="" class="campo">
            </div><br>
            <div class="">
                <label>% Gordura</label>
                <input id="nome" type="text" name="gordura" placeholder="Digite a % Gordura do seu paciente" value="" class="campo">
            </div><br>
            <button id="btn" type="submit" name="button">Cadastrar</button>
        </form>

Tem um erro na definição do form:

<div class="">
        <label>% Gordura</label>
        <input id="nome" type="text" name="gordura" placeholder="Digite a % Gordura do seu paciente" value="" class="campo">
    </div><br>

O correto é :

<div class="">
        <label>% Gordura</label>
        <input id="gordura" type="text" name="gordura" placeholder="Digite a % Gordura do seu paciente" value="" class="campo">
    </div><br>

Você esqueceu de mudar o ID.

solução!

Boa noite, Renato.

O problema está no retorno da sua função obtemInformacaoForm.

  // chama funcao form
  obtemInformacaoForm(form);

A sua função retorna o objeto paciente que você criou dentro dela. Mas você precisa jogar esse retorno dentro de outra variável para poder trabalhar com ele mais para frente. Ex:

  // chama funcao form
  var pacienteRetornado = obtemInformacaoForm(form);

Com a variável pacienteRetornado você conseguirá acessar os dados do paciente:

 // coloca testo do form na td criada
    nomeTd.textContent =     pacienteRetornado.nome;
    pesoTd.textContent =     pacienteRetornado.peso;
    alturaTd.textContent =   pacienteRetornado.altura;
    gorduraTd.textContent =  pacienteRetornado.gordura;
//O imc já está sendo calculado dentro da função obtemInformaçãoForm
    imcTd.textContent =      pacienteRetornado.imc;

Tenta corrigir isso, que eu acredito que vá funcionar rs.

Vou editar minha resposta, pois ao fazer uns testes aqui vi que esse erro deve estar ocorrendo devido ao problema do id apontado pelo Gabriel. Mas os apontamentos acima continuam válidos!

Deu certo, obrigado!