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

Onde está o erro?

Olá pessoal, tenho uma dúvida que não consigo encontrar o erro em meu código, alguém por favor, me ajude! A intenção era que, se o peso for inválido e a altura também, o resultado fosse que os 2 fossem inválidos, porém, o que acontece é que se apenas um está inválido, aparece que os 2 estão!

 var titulo = document.querySelector(".titulo")
    titulo.textContent = "Aparecida Nutricionista"

   var paciente = document.querySelector("#primeiro-paciente");
var codImc = paciente.querySelector(".info-imc");

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

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

var imc = peso / (altura * altura);
var validacao = true;
if(peso <= 0 || peso >= 1000) {
    codImc.textContent = "Peso Inválido"
    validacao = false;
}
if(altura <= 0 || altura >= 3.0) {
    codImc.textContent = "Altura Inválida"
    validacao = false;
}
if(altura <= 0 || altura >= 3.0 && peso <= 0 || peso >= 1000) {
    codImc.textContent = "Altura e Peso Inválidos"
    validacao = false;
}


if(validacao == true) {
codImc.textContent = imc
}
3 respostas

Olá Maurício, tudo bem?

Tem como passar todo seu código HTML e JS por aqui? Ou colocar no GitHub ou no Google Drive.

É que a questão é mais JS mano, não acredito que esteja relacionado ao HTML. Sabe me dizer se existe algum erro neste código? Principalmente no último if.

solução!

Olá Maurício. O equívoco está na condição do if, o que eu recomendaria seria separar por conjunto de condições, ficando assim:

if( (altura <= 0 || altura >= 3.0) && (peso <= 0 || peso >= 1000) ) {
   codImc.textContent = "Altura e Peso Inválidos";
   validacao = false;
}

Pois em ambas condições de altura && ambas condições de peso, queremos que execute nosso if. Espero ter ajudado!