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

imc5.html:22 [Violation] Avoid using document.write()

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
   }

    function calculaImc(altura, peso) {

        return peso / ( altura * altura );
    }

    var nome = prompt("Informe o seu nome :");
    var alturaInformada = prompt(nome + ",informe sua altura :");
    var pesoInformado = prompt(nome + ",informe sua peso : ");

    var imc = calculaImc(alturaInformada,pesoInformado);
    document.write(nome + ", o IMC calculado é : " + imc);

</script>

Bom dia, pessoal. Estou surtando aqui, rs ! Brincadeira, eu comparando o código parece idêntico ao do mestre, porém dá erro na exibição do IMC., recebo o "Kildane, o IMC calculado é : NaN" na console de depuração do Google, me retorna imc5.html:22 [Violation] Avoid using document.write(). https://developers.google.com/web/updates/2016/08/removing-document-write Contudo, não deu "match" para mim. Alguém poderia me dar a luz ? Grata.

3 respostas
solução!

Olá, Kildane.

O que acontece é que quando a leitura é realizada através do prompt, o retorno é um string. Você terá que converter o retorno do prompt pra o formato adequado (neste caso, float). Para isso, você pode utilizar a função parseFloat.

O código com as correções, seria:

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
   }

    function calculaImc(altura, peso) {

        return peso / ( altura * altura );
    }

    var nome = prompt("Informe o seu nome :");
    var alturaInformada = parseFloat(prompt(nome + ",informe sua altura :"));
    var pesoInformado = parseFloat(prompt(nome + ",informe sua peso : "));

    var imc = calculaImc(alturaInformada,pesoInformado);
    document.write(nome + ", o IMC calculado é : " + imc);

</script>

Caso quisesse converter um valor para Integer, você poderia utilizar ParseInt.

P.S. Lembre-se ao inserir os valores com casas decimais, separe-as através do ponto (.) e não da vírgula.

Espero ter ajudado.

Desta eu não sabia mesmo . A jornada é bem longa e e sua ajuda é mais um tijolo na estrada que estou trilhando. ! Dica de Ouro. gratidão.

Que bom, Kildane.

Você pode marcar a minha resposta como solução, pra que o tópico não apareça mais na seção de tópicos não solucionados.

Qualquer dúcida é só perguntar,

Abraços!