ei, pessoal, tudo bem com vocês? ontem fiquei um tempão tentando criar a mensagem "Peso e altura inválidos!", mas o meu obstáculo foi que ela aparecia tanto quando o peso era inválido quanto quando a altura era inválida (ambos isoladamente).essa foi a minha primeira tentativa (sem sucesso):
if(peso <= 0 || peso >= 1000 && altura <= 0 || altura >= 2.50){
console.log("Peso e altura inválidos!");
alturaValida && pesoValido = false;
tdImc.textContent = "Peso e altura inválidos!";
}
depois, pesquisando no fórum da Alura, descobri a seguinte solução (que me pareceu incompleta - pelo menos pro meu propósito, que era mostrar as mensagens específicas "Peso inválido!", "Altura inválida!" ou "Peso e altura inválidos!" no td do Imc):
if(alturaValida && pesoValido){
var imc = peso / (altura * altura); // nesse caso, 100 / 4 = 25
tdImc.textContent = imc;
} else {
tdImc.textContent = "Peso e altura inválidos!";
}
aqui acredito que o ideal seria que eu colocasse a mensagem "Peso e/ou altura inválidos!" e apagasse as mensagens "Peso inválido!" e "Altura inválida!" das funções anteriores (já que a única mensagem que seria mostrada seria a "Peso e/ou altura inválidos!" mesmo). mas chegar, exatamente, ao resultado que estava imaginando, então comecei uma série de tentativas aleatórias (sem saber exatamente o que eu estava fazendo), até que cheguei à seguinte:
if(999 > peso < 0.1 && 2.49 > altura < 0.1){
console.log("Peso e altura inválidos!");
tdImc.textContent = "Peso e altura inválidos!";
}
finalmente consegui que as três mensagens ("Peso inválido!", "Altura inválida!" ou "Peso e altura inválidos!") aparecessem em seus respectivos contextos. feitos os devidos testes: tudo ok, mas me surgiu uma dúvida, digamos assim, primária (matemática básica hehe): não entendi o sentido lógico do maior que (>) e menor que (<). vamos lá:
if(999 > peso < 0.1 && 2.49 > altura < 0.1){
console.log("Peso e altura inválidos!");
tdImc.textContent = "Peso e altura inválidos!";
}
eu leria essa sentença/função assim:
se 999 é maior que o peso e o peso é menor do que 0.1 e se 2.49 é maior que a altura e a altura é menor do que 0.1, então aparecerá no console e no tdImc a mensagem "Peso e altura inválidos!".
mas pensando lógicamente o certo não seria se 999 é menor que o peso (ou seja, o peso é maior que 999) e o peso é menor que 0.1 e se 2.49 é menor que a altura (ou seja, a altura é maior que 2.49) e a altura é menor que 0.1, então peso e altura serão inválidos? tentei trocar os sinais, para traduzirem essa última frase, mas não deu certo.
alguém pode me explicar a lógica por trás disso? e porque deu certo mesmo com a "tradução" da lógica significando outra coisa. ou a minha lógica que está errada?
obrigada pela atenção, desde já. um grande abraço Anita :)