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

Validação da altura

Olá estou em dúvida no seguinte: Na hora de validar a altura do meu formulário ele está me retornando sempre "altura é inválida" quando não era pra ser, não consigo encontrar onde está o erro.

----- Código calcula imc -----

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

for(let i = 0; i < pacientes.length; i++){

let paciente = pacientes[i]

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

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

let tdImc = paciente.querySelector(".info-imc")

let pesoValido = validaPeso(peso);
let alturaValida = validaAltura(altura);


 if(!pesoValido){
    console.log("Peso inválido");
    pesoValido = false;
    tdImc.textContent = "Peso inválido";
    paciente.classList.add("paciente-invalido");

}

 if(!alturaValida) {
    console.log("Altura inválida");
    alturaValida = false;
    tdAltura.textContent = "Altura inválida";
    paciente.classList.add("paciente-invalido");

} 

if(pesoValido && alturaValida) {
    let imc = calculaImc(peso, altura);
    tdImc.textContent = imc;
}

function calculaImc(peso, altura) {

let imc = peso / (altura * altura);

return Math.round(imc);

}

}

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

}

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

}

----------- Código form.js ------------

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

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

let paciente = obtemPacienteDoFormulario(form);

let pacienteTr = montaTr(paciente);

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

let tabela = document.querySelector("#tabela-pacientes");

tabela.appendChild(pacienteTr);

form.reset();

});

function exibeMensagensDeErro(erros) { let ul = document.querySelector("#mensagens-erro"); erros.forEach(function(erro){ let li = document.createElement("li"); li.textContent = erro; ul.appendChild(li); }); }

function obtemPacienteDoFormulario(form) {

let paciente = {
    nome: form.nome.value,
    peso: form.peso.value,
    altura: form.peso.value,
    gordura: form.gordura.value,
    imc: calculaImc(form.peso.value, form.altura.value)
}

return paciente;

}

function montaTr(paciente) { let pacienteTr = document.createElement("tr"); pacienteTr.classList.add("paciente");

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 montaTd(dado,classe) { let td = document.createElement("td"); td.textContent = dado; td.classList.add(classe);

return td;

}

function validaPaciente(paciente) {

let erros = [];

if(!validaPeso(paciente.peso)) {

    erros.push("Peso é inválido");
}


if(!validaAltura(paciente.altura)) {

    erros.push("Altura é inválida");
}

return erros;

}

2 respostas
solução!

Já consegui resolver galera, a altura estava recebendo o valor do peso só fiz alterar o "form.peso.value" para form.altura.value.

Oi Augusto, tudo bem?

Que bom que você conseguiu resolver o problema e obrigada por postar aqui a sua solução!

Um abraço e bons estudos.