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

Não achei o erro da minha lógica

Tentei fazer um pouco diferente da aula mas não consegui acertar minha lógica. pesoPp e alturaPp seriam pesoPrimeiroPaciente e alturaPrimeiroPaciente porém simplifiquei o nome da variável.

a ideia era fazer uma única validação com if else, caso os valores de pesoValidation E alturaValidation fossem true exibiria o valor do calculo do imc, caso contrário, apareceria uma mensagem de erro dizendo. "Dados inválidos"

var imc = pesoPp / (alturaPp * alturaPp);
console.log(imc);

    var imcPp = primeiroPaciente.querySelector(".info-imc");

    var pesoValidation = false; 
    var alturaValidation = false;

    if(pesoPp <= 0 || pesoPp >= 500) {
        pesoValidation = false;
    }

    if(alturaPp <=0 || alturaPp >= 3.5) {
        alturaValidation = false;
    }

    if(pesoValidation && alturaValidation == true) {
        imcPp.textContent = imc;  
    }else {
        imcPp.textContent = "Dados inválidos";
    }
3 respostas

Olá Gabriel, tudo bem?

Imagina se suas condicionais if retornaram false, o peso negativo e a altura de 4 por exemplo, os valores de pesoValidation e alturaValidation não sofrem mudança ai quando chega no if caso os valores de pesoValidation E alturaValidation fossem true exibiria o valor do calculo do imc, caso contrário, apareceria uma mensagem de erro dizendo. "Dados inválidos", pesoValidation E alturaValidation já estão como falso.

var pesoValidation = false; 
    var alturaValidation = false;

Nesse caso ele sempre será falso, quando chegar no if para exibir o imc ou a mensagem, vai cair no else e aparecer a mensagem.As variáveis pesoValidation e alturaValidation devem iniciar como true

Bons estudos. Abraço.

Boa tarde Diego, obrigado por responder à minha duvida, pelo que entendi a lógica está correta porém a variável precisa iniciar com true mas, mesmo assim ele manda pro HTML o valor do imc, mesmo usando peso com valor 1000!!! Acredito que algo esteja errado na lógica.

Segue código js completo

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

var primeiroPaciente = document.querySelector("#primeiro__paciente");
var pesoPp = primeiroPaciente.querySelector(".info-peso").textContent;
var alturaPp = primeiroPaciente.querySelector(".info-altura").textContent;

var imc = pesoPp / (alturaPp * alturaPp);
var imcPp = primeiroPaciente.querySelector(".info-imc");

    var pesoValidation = true; 
    var alturaValidation = true;

    if(pesoPp <= 0 || pesoPp >= 500) {
        pesoValidation = false;
    }

    if(alturaPp <=0 || alturaPp >= 3.5) {
        alturaValidation = false;
    }

    if(pesoValidation && alturaValidation == true) {
        imcPp.textContent = imc;  
    }else {
        imcPp.textContent = "Dados inválidos";
    }

imcPp.textContent = imc;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Achei o erro, eu estava colocando outro imcPp.textContent = imc; no final do codigo. A lógica estava correta só errei em sobescrever a variável após a validação!