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

Apenas a última validação está ocorrendo

Só funciona o último IF mas as validações particulares de altura e peso não estão retornando.

5 respostas
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";

}
solução!

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