Olá! Estou com dificuldade para encontrar meu erro. Não sei o porquê, mas toda vez que tento adicionar um paciente com peso válido, o site mostra a mensagem de peso inválido. Podem me ajudar?
Segue os códigos completos abaixo.
PARA CRIAR O FORMULÁRIO
//pegando um botão no mundo HTML e atrelando uma função e ele
/////////////////////////////////////
////////REFATORANDO O CÓDIGO ////////
/////////////////////////////////////
var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(evento){
evento.preventDefault();
var formulario = document.querySelector("#form-adiciona")
var paciente = extraiPacienteDoForm(formulario);
var pacienteTr = montaTr(paciente);
var erro = validaPaciente(paciente);
if (erro.length > 0){
var mensagemErro = document.querySelector("#mensagem-erro");
mensagemErro.textContent = erro;
return;
}
//colocando a tr formada dentro da tabela de pacientes
var tabela = document.querySelector("#tabela-pacientes")
tabela.appendChild(pacienteTr);
formulario.reset();
// captando os valores que estão dentro dos inputs, via formulario, usando "value"
//CRIANDO OBJETO com as informações //
})
///////////////////////////
/////////FUNÇÕES///////////
///////////////////////////
function extraiPacienteDoForm(form){
var paciente = {
nomeInput: form.nome.value,
pesoInput: form.peso.value,
alturaInput: form.altura.value,
gorduraInput: form.gordura.value,
imc:calculaImc(form.peso.value, form.altura.value)
}
return paciente;
}
//criando os elementos html tds e a tr
function montaTr(paciente){
var pacienteTr = document.createElement("tr");
pacienteTr.classList.add("paciente");
//colocando as tds como filhos da tr - pacienteTr
pacienteTr.appendChild(montaTd(paciente.nomeInput, "info-nome"));
pacienteTr.appendChild(montaTd(paciente.pesoInput, "info-peso"));
pacienteTr.appendChild(montaTd(paciente.alturaInput, "info-altura"));
pacienteTr.appendChild(montaTd(paciente.gorduraInput, "info-gordura"));
pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));
return pacienteTr;
}
function montaTd(dado, classe){
var td = document.createElement("td");
td.textContent = dado; //nomeInput
td.classList.add(classe); //info-nome
return td;
}
function validaPaciente(paciente){
if(validaPeso(paciente.peso)){
return "";
}else {
return "O peso é inválido";
}
}
PARA CALCULAR IMC E VALIDAR PESO E ALTURA
var tituloPrincipal = document.querySelector(".titulo-principal");
tituloPrincipal.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 tdAltura = paciente.querySelector(".info-altura");
var tdImc = paciente.querySelector(".info-imc");
var peso = tdPeso.textContent;
var altura = tdAltura.textContent;
var imc = tdImc.textContent;
var pesoEhValido = validaPeso(peso);
var alturaEhValida = validaAltura(altura);
if (!pesoEhValido){ // se for falso, vai entrar na condição
tdImc.textContent = "Peso inválido";
pesoEhValido = false;
paciente.classList.add("valor-invalido");
} if(!alturaEhValida){
tdImc.textContent = "Altura inválida";
alturaEhValida = false;
paciente.classList.add("valor-invalido");
}
if (pesoEhValido && alturaEhValida){
tdImc.textContent = calculaImc(peso,altura);
}
}
function validaPeso(peso){
if(peso >= 0 && peso < 500){
return true;
}else {
return false;
}
}
function validaAltura (altura){
if (altura > 0 && altura <= 3.0 ){
return true;
}else {
return false;
}
}
function calculaImc(peso, altura){
var imc = 0;
imc = peso/(altura*altura);
return imc.toFixed(0);
}