Ir ao conteúdo
  • Cadastre-se

Javascript Obtendo valores pelo document.getElementById


Posts recomendados

Galera estou começando  no javascript agora e não estou conseguindo solucionar meu exercício, podem me ajudar por favor!!

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script>
        function CalculaPareImpar() {
            var QtdePar = 0, QtdeImpar = 0, MediaPar = 0, MediaGeral = 0;
            entrada1 = document.getElementById("entrada1").value;
            entrada2 = document.getElementById("entrada2").value;
            p = document.getElementById("ParImpar");
            
            if (isNaN(entrada1)|| isNaN(entrada2)) {
                document.getElementById("msg1").innerHTML = "Informe dois números válidos";
            }
            else
            {
               for (i = entrada1; i <= entrada2; i++) {
                   if (i % 2 == 0) {
                        QtdePar++;
                        MediaPar = QtdePar + QtdePar;
                    }
                   else {
                        QtdeImpar++;
                        MediaImpar = QtdeImpar + QtdeImpar;
                    }
                   MediaGeral = (MediaImpar + MediaPar) / (QtdePar + QtdeImpar);
                }
            }
            conteudo = conteudo + "Quantidade de números pares é: " + QtdePar + "<br/> Quantidade de números ímpares é: " + QtdeImpar + "<br/> Média dos valores pares é: "
                + MediaPar + "<br/> Média geral dos núemros lidos é: " + MediaGeral;
            document.getElementById("msg1").innerHTML = "";
            p.innerHTML = conteudo;
        }
    </script>
</head>
<body>
    <form id="frm2" method="get">
        <fieldset>
            <legend>Calcular números pares e ímpares</legend>
            <input type="text" id="entrada1" name="entrada1" placeholder="Informe o primeiro número..." /><span style="color:red;" id="msg1"></span><br /><br />
            <input type="text" id="entrada2" name="entrada2" placeholder="Informe o segundo número..." /><span style="color:red;" id="msg2"></span><br /><br />
            <input type="button" value="Processar..." onclick="CalculaPareImpar();" />
        </fieldset>
    </form>
    <p id="ParImpar" style="color:blue;">Resultado!</p>
</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

Quando estiver programando em JavaScript, recomendo que sempre monitore o console do seu navegador, no caso do Google Chrome, você pode acessá-lo apertando F12. Lá você pode encontrar eventuais mensagens de erro.

 

No caso do seu código, o console está reportando um erro nessa linha:

conteudo = conteudo + "Quantidade de números pares é: " + QtdePar + "<br/> Quantidade de números ímpares é: " + QtdeImpar + "<br/> Média dos valores pares é: "
                + MediaPar + "<br/> Média geral dos núemros lidos é: " + MediaGeral;

O motivo do erro é que você está tentando concatenar uma variável que está sendo declarada no momento.

 

Remova o (conteudo +) ou declare da seguinte

var conteudo = "Resultado: ";

Alterando a string pelo nome que você desejar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

agora, Mateus Martinez Rosa disse:

Olá, obrigado pela ajuda, mas não deu muito certo, os valores que  não eram para passar pela validação passaram..., e os resultados não estão batendo!! =(

Encontrei mais uns problemas porque os números estão vindo como string e acaba as vezes não entrando no for. Para consertar isso, você precisa colocar o resultado das entradas multiplicadas por 1 para convertê-las para número.

entrada1 = document.getElementById("entrada1").value*1;
entrada2 = document.getElementById("entrada2").value*1;

Mais uma parte que estava errada era a relação das médias dos pares e ímpares. Se você desejava obter o valor médio dos números pares, deveria ter feito da seguinte forma:

//Alterar dentro do if a variável MediaPar para isto:
MediaPar += i;
//Porque a média dos números é a somatório dos números dividido pela quantidade de números.
//E ao final do loop, você deveria calcular a média da seguinte forma:
MediaPar = MediaPar/QtdePar;

Se desejava fazer isso, deverá trocar a média dos ímpares também da mesma forma. E consequentemente, a MediaGeral também estará correta.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Uma solução alternativa para contornar o problema como string além da apresentada, é usar a função parseInt().

Veja se é assim que deveria ser:

function CalculaPareImpar() { 
   //Variaveis
   var n1 = parseInt(document.getElementById("entrada1").value);
   var n2 = parseInt(document.getElementById("entrada2").value);  
   var contPar = 0, contImpar = 0, MediaPar = 0, MediaImpar = 0, MediaGeral = 0;
   
   //Testa se é numérico
   if(isNaN(n1) || isNaN(n2)){
       document.getElementById("ParImpar").innerHTML = "Informe dois números válidos";
   }else{
      //Laço de FOR
      for(i= n1; i<= n2; i++){
          //Teste de IF Ternário qtdPAR Média Par qtd Impar e Média impar
          i % 2 == 0 ? (contPar++, MediaPar+=i) : (contImpar++, MediaImpar+=i);
      }
      
      //Calculos de médias
       MediaPar = MediaPar/contPar;
       MediaImpar = MediaImpar/contImpar;
       MediaGeral = (contPar + contImpar) / (MediaPar + MediaImpar);
      
      //Armazena a string de resultado que será exibido
      var resultado = "Total de Pares: " + contPar +
      		      "</br>Total de Ímpares: " + contImpar+
                      "<br/> Média de Pares: " + MediaPar+
                      "</br>Média de Ímpares: "+ MediaImpar+
                      "</br>Média Geral: "+ MediaGeral.toFixed(2);
                      
       //Insere o resultado no elemento desejado               
      document.getElementById("ParImpar").innerHTML = resultado;     
   }  
}

PS: Só não estou certo do cálculo de média geral. rsrs Mas no mais é isso.

Veja funcionando:  http://jsfiddle.net/dife/9969k5zj/

 

PS: Seria mais prático e elegante fazer em jQuery. Menos linhas.

No caso desse acima, usei pelo menos o IF ternário para deixar mais organizado com menos linhas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...