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

Desenvolvendo codigo com o aprendido ate agora

<meta charset="UTF-8">

<h1> Bem vindo ao programa de calculo de IMC </h1>
<br>
Digite o seu peso:   <input id="pesoInformado">
<br>
Digite a sua altura: <input id="alturaInformada">
<br><br>
<button>Calcular</button>
<br>

<script>

var pesoInformado = document.querySelector("#pesoInformado");
pesoInformado.focus();
var alturaInformada = document.querySelector("#alturaInformada")

function somaImc() {

    if(pesoInformado == isNaN && alturaInformada == isNaN ) {

        alert("Digite seu peso e altura.")

    } else {

    var imc = pesoInformado.value / ( alturaInformada.value * alturaInformada.value);
    alert("O seu IMC é " + imc)

    }
}

var button = document.querySelector("button");
button.onclick = somaImc;

</script>

Boa Tarde,

Estou desenvolvendo essa calculadora de IMC me baseando em tudo que aprendi até agora, mas, estou com alguns problemas, não sei o que colocar para quando o usuario não digitar nada em peso e/ou altura ele não fazer o teste e pedir para a pessoa escrever numeros validos e na parte de ALTURA tentei colocar um .replace(',', '.') e tambem não deu certo...

Algumas das coisas precisei contar com a ajuda de um amigo, que é o caso da inclusão de mais de dois input's então um amigo me passou a consultoria para isso...

gostaria de um auxilio no que estou errando.

obrigado

4 respostas

Olá Francisco, tudo bem?

Temos dois pontos as serem trabalhados aqui. Vamos lá!

Quando o usuário não digitar nada ou digitar apenas a altura ou apenas o peso:

Iremos substituir o atual if da function somaImc() por if(!pesoInformado.value || !alturaInformada.value). Dessa forma, estamos dizendo que se o valor do peso informado ou o valor da altura informada for diferente/não corresponder a um valor de fato (ou seja, valor 0 ou nulo), irá fazer alert("Digite seu peso e altura.")

Caso o usuário digite vírgula ao invés de ponto na altura:

Para isso, iremos criar uma variável para guardar o valor correto da altura. Nós utilizaremos o replace, assim: var altura = alturaInformada.value.replace(',', '.'). Após isso, iremos trocar o alturaInformada.value que estava presente no cálculo da var imc por essa nova variável, a var altura. Talvez não tenha funcionado anteriormente, pois você deve ter aplicado o replace de uma outra maneira.

O código completo da function somaImc() ficará assim:

function somaImc() {

    if(!pesoInformado.value || !alturaInformada.value) { //1º ponto: if modificado

        alert("Digite seu peso e altura.")

    } else {
        var altura = alturaInformada.value.replace(',', '.') //2ºponto: transformando vírgula em ponto
        var imc = pesoInformado.value / ( altura * altura ) //troca alturaInformada.value. por altura

        alert("O seu IMC é " + imc)

    }

}

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!

Nossa, muito obrigado Beatriz, segunda duvida que coloco aqui e você quem me ajuda!

Sucesso para você!

if(!pesoInformado.value || !alturaInformada.value)

Esses ! e || qual a funcionalidade deles ? mais uma vez agradeço a sua atenção..

solução!

Opa Francisco, imagina!

Fico super feliz de participar do seu processo de aprendizado.

No código if(!pesoInformado.value || !alturaInformada.value), o sinal de ! se refere a not/não e o || se refere ao operador or/ou.

Então, como citei anteriormente, estamos dizendo que se o valor do peso informado ou o valor da altura informada não for válido, isto é, se um dos dois for diferente do que se refere a um valor de fato (valor 0 ou nulo), irá fazer alert("Digite seu peso e altura.").

Se essa resposta te ajudou, não deixe de marcar como solucionado para sinalizar para os outros alunos que possam vir a ter a mesma dúvida onde encontrar a resposta.

Em caso de dúvidas estou por aqui :)

Abraços e bons estudos!