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

Meu código só esta validando o ultimo "IF"

Galera é o seguinte quando a altura ou peso está erro ao invés dele validar se o peso ou altura está errado e exibir na célula imc um ele sempre está exibindo o ultimo if mas se eu tirar o else do ultimo if ai ele funciona de forma coerente conforme a ordem da estrutura se o peso estive errado na célula do imc vai ser exibido peso inválido mas se eu deixar com else ele sempre vai exibir a condição do ultimo IF.


if (peso <=0 || peso > 400) {
    console.log ("Peso Inválido");
    tdImc.textContent = "Peso Inválido";
    pesoEhValido = false;
}

if (altura <=0 || altura >= 3 ){
    console.log ("Altura inválida");
    tdImc.textContent = "Altura Inválida";
    alturaEhValida =  false; 
}

if (alturaEhValida && pesoEhValido) {
    var imc =  peso / (altura * altura);
    tdImc.textContent = imc; 
} else {
    tdImc.textContent = "Altura ou peso inválidos!"
}

2 respostas
solução!

Fala Wellington.

A lógica está certa! Faltou apenas interromper o código quando a altura ou o peso forem inválidos. Então uma possível abordagem, seria dar um return quando um desses desses parâmetros forem inválidos.

Por exemplo:

function giveMyImcBy(peso, altura){

    var alturaEhValida = true;
    var pesoEhValido = true;

    if (peso <=0 || peso > 400) {

        console.log("Peso Inválido");
        pesoEhValido = false;
        return; // Interrompe se peso for inválido
    }

    if (altura <=0 || altura >= 3 ){

        console.log ("Altura inválida");
        alturaEhValida =  false; 
        return; // Interrompe se altura for inválida
    }

    if (alturaEhValida && pesoEhValido) {
        console.log(peso / (altura * altura));

    } else {
        console.log("Altura ou peso inválidos!");
    }
}

giveMyImcBy(85, 1.73);

giveMyImcBy(0, 1.73);

giveMyImcBy(85, 4);

Rode esse código no console do Chrome e veja o resultado. Espero ter ajudado!

E ai Allan deu certinho agora valeu pela ajuda!