Ir para conteúdo
raphaelgs

Resultado da minha soma esta dando NaN

Recommended Posts

não estou conseguindo encaixar a logica para fazer a soma dar sem NaN

sendo que o campo do aluguel esta com o value vazio porque estou simulando caso o usuário não tenha aluguel.

 

segue abaixo meu código

<p class="campo1"><span>Mensalidade Faculdade: </span>R$<input id="mensalidade" value="10"></p>
<p class="campo1"><span>Aluguel: </span>R$<input id="aluguel" value=""></p>
<p class="campo1"><span>Água: </span>R$<input id="agua" value="30"></p>
<p class="campo1"><span>Luz: </span>R$<input id="luz" value="10"></p>
<script type="text/javascript">
    function despesas(){

        var mensalidade = document.getElementById("mensalidade").value;
        var aluguel = document.getElementById("aluguel").value;
        var agua = document.getElementById("agua").value;
        var luz = document.getElementById("luz").value;
        
        var total = parseInt(mensalidade) + parseInt(aluguel) + parseInt(agua) + parseInt(luz);

        document.getElementById("resultado").innerHTML = total;
    }

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o seu problema é simples você está tendo o erro 'NaN', porque o parseInt não consegue converter vazio para inteiro, é necessário que você crie uma validação e quando o valor for vazio deve substituir por zero (0). Mas o correto mesmo é que você utilizasse parseFloat pois está lidando com valores monetários e é muito comum lidar com valores fracionados.

 

HTML:

<p class="campo1"><span>Mensalidade Faculdade: </span>R$<input id="mensalidade" value="10"></p>
<p class="campo1"><span>Aluguel: </span>R$<input id="aluguel" value=""></p>
<p class="campo1"><span>Água: </span>R$<input id="agua" value="30"></p>
<p class="campo1"><span>Luz: </span>R$<input id="luz" value="10"></p>

<label>
  Resultado:
  <span id="resultado"></span>
</label>

<button onclick="despesas()">Calcular despesas</button>

JS:

function despesas(){
  var mensalidade = document.getElementById("mensalidade").value;
  var aluguel = document.getElementById("aluguel").value;
  var agua = document.getElementById("agua").value;
  var luz = document.getElementById("luz").value;

  var total = validValue(mensalidade) + validValue(aluguel) + validValue(agua) + validValue(luz);

  document.getElementById("resultado").innerHTML = total;
}

function validValue(value) {
  if(!value) {
    return 0;
  } else {
    return parseInt(value);
  }
}

exemplo: https://jsbin.com/sifeyugavu/edit?html,js,console,output

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por patriciahelena
      Boa noite,
       
      Preciso de ajuda.
      No arquivo form.php tenho 3 inputs de entrada(valor1, valor2, valor3) e 3 inputs(disabled) que receberão os valores calculados do arquivo form_matematico5.php.
      Na tag form onsubmit="return calcula()"
       
          <h4 class="calcula"></h4>
       
      <script>
      function calcula($volmedio, $temp, $precogas) {
      $.get("form_matematico5.php", $('#calculorecovap').serialize(),
          function(data){
              $('.calcula').html(data);
          }
      );
      return false;
      }
      </script>
       
       
      No arquivo form_matecatico5.php é feito os calculos gerando 3 valores. 
      Tenho um echo:
      echo 'texto<br><div style=font-size:23px;color:red;>' . number_format($Resultado1,0,",","."). '</div> <br> texto<br><div style=font-size:23px;color:red;>'. number_format($Resultado2,0,",","."). '</div> <br>texto<br><div style=font-size:23px;color:red;>R$ '. number_format($Resultado3,2,",","."). '</div>';
       
      Ele retorna o echo certinho em     <h4 class="calcula"></h4>.
      Mas o que eu quero mesmo é que Resultado1 retorne dentro do primeiro input(disabled), o Resultado2 dento do segundo input(disabled) e assim com o terceiro. Ou seja,
      Cada input(disabled), recebera um valor diferente e não o total de .calcula.
       
      Espero ter explicado direitinho,
      Obrigada
       
       
       
       
       
       
       
    • Por Rogerio Pancini
      Boa noite pessoal.
       
      Há duas partes de uma tela que estão prontas, funcionando, mas não corretamente.
      Nessa parte, faço um cálculo.
      Sem a máscara de Real, ótimo.
      Se coloco a máscara 'valor'no input, retorna NaN.
       
      /****** maskMoney ******/ $(function(){ $(".valor").maskMoney({symbol:'R$ ', showSymbol:true, thousands:'.', decimal:',', symbolStay: true}); }) /****** Função percentual ******/ function funcao_percentual(valor_1, destino, percentual) { $(valor_1).on("click", function() { $(destino).val(''); }); function arredondar(valor,casas){ var novo = Math.round(valor*Math.pow(10,casas))/Math.pow(10,casas); return(novo); } $(valor_1).blur(function() { valor = $(this).val(); porcentagem = percentual; // PORCENTAGEM A SER ADICIONADA total = (parseFloat((valor*porcentagem)/100)); $(destino).val(arredondar(total, 2)); }); } /****** Função subtrair ******/ function funcao_subtrair(valor_1, valor_2, inicio, destino) { $(inicio).on("click", function() { $(destino).val(''); }); function arredondar(valor,casas){ var novo = Math.round(valor*Math.pow(10,casas))/Math.pow(10,casas); return(novo); } $(inicio).blur(function() { valor_1_v = $(valor_1).val(); valor_2_v = $(valor_2).val(); total = (parseFloat((valor_1_v-valor_2_v))); $(destino).val(arredondar(total, 2)); }); } /****** Percentual de Provisão - Royalties (franchising) ******/ funcao_percentual("#valor", "#provisao_royalties_franchising", 39.85) /****** Percentual de Provisão Fundo Propaganda ******/ funcao_percentual("#valor", "#provisao_fundo_propaganda", 3) /****** Subtração de Provisão - Royalties ( franchising) ******/ funcao_subtrair("#provisao_royalties_franchising", "#provisao_fundo_propaganda", "#valor", "#provisao_royalties_franchising_2") E o outro BO é quando somo datas. Dá um resultado que não tem nada haver com a planilha que tenho de modelo:
       
      /****** Função calcular a data ******/ function funcao_calcular_data(data_inicial, data_final, dias) { $(data_inicial).blur(function() { $(data_inicial).on("click", function() { $(data_final).val(''); }); var data_ini = $(data_inicial).val(); var date = new Date(data_ini); date.setDate(date.getDate() + dias); var futDate=date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear(); $(data_final).val(futDate); }); } /****** 1º vencimento ******/ funcao_calcular_data("#data_emissao", "#1_venc", 28) /****** 2º vencimento ******/ funcao_calcular_data("#data_emissao", "#2_venc", 42) /****** 3º vencimento ******/ funcao_calcular_data("#data_emissao", "#3_venc", 56) Se alguém puder colaborar com alguma luz.
      Confesso que preciso melhorar ainda mais em Jquery, mas essas funções ficaram boas para a necessidade.
      Faltam apenas esses ajustes.
       
      Obrigado!
    • Por Claudia França
      Pessoal escrevi o código,  (  <style id=”antiClickjack”>body{display:important;}</style>
      <script type=”text/javascript”>
      if (self === top) {
      var antiClickjack = document.getElementById(“antiClickjack”);
      antiClickjack.parentNode.removeChild(antiClickjack);
      } else {
      top.location = self.location;
      }
      </script> ) em um site o head por exigência da empresa de cartão, mas tenho percebido que com um tempo o site para de acionar o java script para carregar outra pagina.  Isso aconteceu depois desse código. Eu tenho que escrever algo no corpo no site para isso nao mais acontecer e deixar o anticlick habilitado. ?
    • Por Solo
      Boa noite  pessoal, estou com um problema, sou iniciante me php e estou em duvida com como posso fazer uma paginacao de produtos do banco de dados...... alguem poderia me ajudar ou me indicar um tutorial ???
       
      <?php
      error_reporting(0);
      ini_set(“display_errors”, 0 );
      require_once("conexao.php"); 
         $produtos = "SELECT produto_ID, nome_produto, imagem_produto, valor ";
          $produtos .= "FROM produto ";
          $resultado = mysqli_query($conecta, $produtos);
          if(!$resultado) {
              die("Falha na consulta ao banco");   
          }
      ?> 
       
       
       
      AONDE LISTA OS PRODUTOS 
       
       
       
          <div class="rowproducts">
          <div id="listagem_produtos2" class="">
            <?php while($linha=mysqli_fetch_assoc($resultado)) {   ?>
                       
                      <ul>
                          <div class="class22">
                          
                          <li>
                              
                              <img  class="img-responsive"  height="200" width="200" src="<?php echo $linha["imagem_produto"]?> "  >
                              </li>
                              
                              <li class="nproduto"><?php echo $linha["nome_produto"]?></li>
                               <li class="nproduto">R$ <?php echo $linha["valor"]?></li>
                          </div>
                          </ul>
                          
                          
                          
                          
                          
                          
                          
                      
                  <?php } ?>
                      
                      
                      
                    </div>
                    </div>
       
       
       
       
    • Por lindomar55
      ola amigos preciso de uma ajudinha, estou montando uma aplicaçao usando vb.net windows forms. nela tenho um botao onde chamo uma url no chrome com o seguinte comando.
      Private Sub Btn_abrir_site_Click(sender As Object, e As EventArgs) Handles Btn_abrir_site.Click
              Dim url As String = “https://www.rico.com.você/dashboard/tesouro-direto/“
              Process.Start(url)
          End Sub
      no google entao eu acesso com meu logim manualmente(prefiro assim). e em realizo uma serie de operaçoes, chega um determinado momento que preciso passar passar os dados que o site me apresenta entao(apos as operaçoes) para o aplicativo. ai é que esta o problema. neste ponto estou boiando.
      no codigo abaixo por exemplo: precisava obter os valores 12,36 e 8806,84 de forma automatica e colocar em textbox.
      vi exemplos na net que mostram com webbrowser porem eu prefiro que seja com o chrome. e nesses exemplos ele abre a pagina e ja obtem os dados. eu preciso trabalhar na pagina muiiiito e so depois baixar os dados programaticamente.
      qualquer ajuda sera bem vinda....
       

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.