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

Mensagems de erro problema || problema

Estou com dificuldade em descobrir o que está errado no meu código, mesmo seguindo o que o instrutor está fazendo,

A mensagem de erro ocorre normalmente quando coloco um peso fora do estabelecido. Mas quando tento criar um paciente normal aparece a seguinte mensagem de erro

Uncaught ReferenceError: pacienteTr is not defined
    at HTMLButtonElement.<anonymous> (form.js:21)

relacionada a linha

tabela.appendChild(pacienteTr);
var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function (event) {
    event.preventDefault();//previna o comportamento padrão do botão na tag forms

    var form = document.querySelector("#form-adiciona");

    //extrai informações do paciente do form
    var paciente = obtemPacienteDoFormulario(form);

    //cria a tr e td do apciente
    var pacientTr = montaTr(paciente)

    var erros = validaPaciente(paciente);
    console.log(erros);
    if (erros.length > 0) {
        exibeMensagensDeErro(erros);
        return;
    }

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

    form.reset();

});

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).toFixed(2)
    }
    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");

    // adicionando o paciente na tabela "td"
    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;
}

function validaPaciente(paciente){

    var erros = [];

    if(!validaPeso(paciente.peso)){
           erros.push(" Peso inválido");
    }
    return erros;
}

function exibeMensagensDeErro(erros) {
    var ul = document.querySelector("#mensagems-erro");

    erros.forEach(function(erro){
        var li = document.createElement("li");
        li.textContent = erro;
        ul.appendChild(li);
    });
}
var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for(var i = 0; i < pacientes.length; i++){
    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var tdIMC = paciente.querySelector(".info-imc");

    var pesoValido = validaPeso(peso);
    if(!pesoValido){
        console.log("peso invalido");
        pesoValido = false;
        tdIMC.textContent = "Peso inválido";
        paciente.classList.add("paciente-invalido");
    }

    var alturaValida = validaAltura(altura);
    if(!validaAltura){
        console.log("altura invalido");
        aulturaValida = false;
        tdIMC.textContent = "Altura invalida";
        paciente.classList.add("paciente-invalido");
        //paciente.style.backgroundColor = "lightcoral";
    }
    if(validaAltura && validaPeso){
        var imc = calculaIMC(peso,altura);
        tdIMC.textContent = imc.toFixed(2);
    }
}
function calculaIMC(peso,altura){
    var imc = 0; 
    imc = peso / (altura * altura);
    return imc;
}
function validaPeso(peso){
    if(peso >= 0 && peso <1000){
        return true;
    }
    else{
        return false;
    }
}
function validaAltura(altura){
    if(altura >= 0 && altura <3){
        return true;
    }
    else{
        return false;
    }
}

GitHub do meu projeto

1 resposta
solução!

Já descobri meu erro, foi ao declarar

var pacientTr = montaTr(paciente)

deveria ser

var pacienteTr = montaTr(paciente)