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

No peso e altura os 2 problemas aparecem

Quando eu deixo o peso ou a altura em branco, aparece "Peso inválido" e "Não pode deixar o peso em branco". Não sei o que fiz de errado

form.js

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(){
    event.preventDefault();

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

    var paciente = obtemPacienteDoFormulario(form);

    var pacienteTr = montaTr(paciente);

    var erros = validaPaciente(paciente);
    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)
    }
    return paciente;
}
function montaTd(dado, classe){
    var td = document.createElement("td");
    td.classList.add(classe);
    td.textContent = dado;
    return td;
}
function montaTr(paciente){
    //cria tr
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");
    //cria td
    pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));

    return pacienteTr;
}    

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

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

calcula-imc.js

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutrição";

var paciente = document.querySelector("#primeiro-paciente");
var pacientes = document.querySelectorAll(".paciente");


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

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

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

    var altura = tdAltura.textContent;
    var peso = tdPeso.textContent;

    var alturaEValida = validaAltura(altura);
    var pesoEValido = validaPeso(peso);

    if(!alturaEValida){

    }
    if(!pesoEValido){

    }

    if(alturaEValida && pesoEValido){
        tdImc.textContent = calculaImc(peso, altura);
    }
}

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

}

function calculaImc(peso, altura){
    var imc = 0;
    imc = peso/(altura*altura);
    return imc.toFixed(2);
}

function validaPaciente(paciente){
    var erros = [];

    if(paciente.nome.length == 0){
        erros.push("O nome não pode ser em branco");
    }
    if(paciente.altura.length == 0){
        erros.push("A altura não pode ser em branco");
    }
    if(paciente.peso.length == 0){
        erros.push("O peso não pode ficar em branco");
    }
    if(paciente.gordura.length == 0){
        erros.push("A gordura não pode ficar em branco");
    }
    if(!validaPeso(paciente.peso)){
        erros.push("Peso inválido");
    }
    if(!validaAltura(paciente.altura)){
        erros.push("Altura inválida");
    }
    return erros;

}
1 resposta
solução!

Olá, Pedro.

Na sua função validaPeso e validaAltura você também precisa analisar se sua altura e peso estão vazias.

function validaPeso(peso) {
    if(peso >0 && peso <= 1000) {
        return true;
    } else if (peso.length === 0) {
        return true;
    } else {
        return false;
    }
}

function validaAltura(altura){
    if(altura > 0 && altura <= 3) {
        return true;
    } else if (altura.length === 0) {
        return true;
    } else {
        return false;
    }
}

Abs.