Só funciona o último IF mas as validações particulares de altura e peso não estão retornando.
Só funciona o último IF mas as validações particulares de altura e peso não estão retornando.
var titulo_principal = document.querySelector(".titulo_principal");
titulo_principal.textContent = ('Aparecida Nutricionista');
var paciente = document.querySelector("#primeiro-paciente");
var tbPeso = paciente.querySelector(".info-peso");
var tbAltura = document.querySelector(".info-altura");
var tbImc = document.querySelector(".info-imc");
var peso = tbPeso.textContent;
var altura = tbAltura.textContent;
pesoEhValido = true;
alturaEhValido = true;
if ( peso <= 0 || peso >= 1000) {
pesoEhValido = false;
console.log("PESO INVÁLIDO");
tbImc.textContent = "PESO INVÁLIDO";
return;
}
if (altura <= 0 || altura >= 3) {
alturaEhValido = false;
console.log("ALTURA INVÁLIDA");
tbImc.textContent = "ALTURA INVÁLIDA";
return;
}
if (pesoEhValido && alturaEhValido) {
var imc = peso / (altura * altura);
tbImc.textContent = imc;
}else {
console.log("PESO E/OU ALTURA INVÁLIDOS");
tbImc.textContent = "PESO E/OU ALTURA INVÁLIDOS";
}
Oi, Maurício, tudo bem?
O problema está na palavra reservada return
dos ifs
. A sua verificação irá trabalhar com as instruções que você deu e irá verificar se são válidas ou não. O return
é relacionado à retornos de funções. Devendo ficar assim:
if ( peso <= 0 || peso >= 1000) {
pesoEhValido = false;
console.log("PESO INVÁLIDO");
tbImc.textContent = "PESO INVÁLIDO";
}
if (altura <= 0 || altura >= 3) {
alturaEhValido = false;
console.log("ALTURA INVÁLIDA");
tbImc.textContent = "ALTURA INVÁLIDA";
}
Testa e me fala se deu certo!
No caso mesmo retirando só está sendo feita a última validação no caso gostaria que essa última validação só fosse retornada para a tabela quando tanto altura quanto peso estiverem incorretos , mas quando apenas o peso estivesse incorreto que fosse retornado o primeiro if e quando apenas altura estivesse incorreto que fosse retornado o segundo if , pois não está ocorrendo dessa forma só está sendo feita a última validação.
var titulo_principal = document.querySelector(".titulo_principal");
titulo_principal.textContent = ('Aparecida Nutricionista');
var paciente = document.querySelector("#primeiro-paciente");
var tbPeso = paciente.querySelector(".info-peso");
var tbAltura = document.querySelector(".info-altura");
var tbImc = document.querySelector(".info-imc");
var peso = tbPeso.textContent;
var altura = tbAltura.textContent;
pesoEhValido = true;
alturaEhValido = true;
if ( peso <= 0 || peso >= 1000) {
pesoEhValido = false;
console.log("PESO INVÁLIDO");
tbImc.textContent = "PESO INVÁLIDO";
}
if (altura <= 0 || altura >= 3) {
alturaEhValido = false;
console.log("ALTURA INVÁLIDA");
tbImc.textContent = "ALTURA INVÁLIDA";
}
if (pesoEhValido && alturaEhValido) {
var imc = peso / (altura * altura);
tbImc.textContent = imc;
}else {
console.log("PESO E/OU ALTURA INVÁLIDOS");
tbImc.textContent = "PESO E/OU ALTURA INVÁLIDOS";
}
Oi, Maurício, tudo bem?
Nesse caso, teremos um problema, pois o primeiro if
será satisfeito, pois sempre que o peso estiver fora da condição, ele entrará no retorno do if
, pois o peso
é um valor inválido, assim, como da altura, ficando dessa forma:
if ( peso <= 0 || peso >= 1000) {
pesoEhValido = false;
console.log("PESO INVÁLIDO");
tbImc.textContent = "PESO INVÁLIDO";
} else if (altura <= 0 || altura >= 3) {
alturaEhValido = false;
console.log("ALTURA INVÁLIDA");
tbImc.textContent = "ALTURA INVÁLIDA";
} else if ( pesoEhValido && alturaEhValido ) {
var imc = peso / (altura * altura);
tbImc.textContent = imc;
}else {
console.log("PESO E/OU ALTURA INVÁLIDOS");
tbImc.textContent = "PESO E/OU ALTURA INVÁLIDOS";
}
Em aulas seguintes o instrutor irá ensinar como utilizar um array para que seja várias mensagens de erros sejam mostradas ao usuários sem precisar desses if aninhando, aqui: https://cursos.alura.com.br/course/javascript-programando-na-linguagem-web/task/24370