Jump to content
Ted2370

Função para somar (problemas)

Recommended Posts

Bom, provavelmente estou cometendo algum erro bobo, mas como sou leigo, vou pedir a ajuda de vocês ^^

 

A ideia é que a função somar() tenha que ir somando o input adicionado já com o antigo, mas ele fica adicionando  e não somando :( alguém poderia apontar o erro?

Já tentei usar o parseFloat e o parseInt, mas acho que não consegui usar de forma correta, talvez seja essa a falha

 

HTML

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
        <!--Input dos Numeros-->
        <input type="number" name="" id="input">
        <!--Botão para Soma-->
        <input type="button" value="OK" onclick="somar()">
        <br> <br>
        <!--Resultado-->
        <input type="number" name="" id="resultado" readonly='true'>
 
    </div>




    <script src="main.js"></script>
</body>
</html>

JS

const { app, BrowserWindow } = require('electron')

function createWindow () {
  // Cria uma janela de navegação.
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // e carregar o index.html do aplicativo.
  win.loadFile('index.html')
}

// Função do botao para ir somando a cada numero que colocado no input
function somar(){
    let input = window.document.getElementById('input').value
    let resultado = window.document.getElementById('resultado')
   
    resultado = resultado.value +=  input

}


app.on('ready', createWindow)

 

Share this post


Link to post
Share on other sites
27 minutos atrás, itlpps disse:

Tente fazer assim:


resultado = +resultado.value +=  +input

 

recebo um erro, onde nem é possível startar por conta desses + antes das variáveis

 

erro:

SyntaxError: Invalid left-hand side in assignment

Share this post


Link to post
Share on other sites

Sua função está interpretando os valores como STR e não como INT.

Por isso quando você anexa o valor usando += ele apenas adiciona novo conteúdo a string já existente.

O que tens de fazer é converter os valores para INTERGER antes de calcular.

podemos usar tanto o parseInt quanto o parseFloat,  esse segundo sendo mais aconselhável para tal fim pois podemos ter que calcular valores abstratos.

var input = window.document.getElementById('input');
var resultado = window.document.getElementById('resultado');

function somar() {
  /* var inputValor = parseInt(input.value); // usando parseInt */
  var inputValor = parseFloat(input.value);
  var resultadoValor = parseFloat(resultado.value);
  var calcular = inputValor += (isNaN(resultadoValor) ? 0 : resultadoValor);
  resultado.value = calcular;
}

 

Share this post


Link to post
Share on other sites
Em 09/11/2019 at 23:09, Omar~ disse:

Sua função está interpretando os valores como STR e não como INT.

Por isso quando você anexa o valor usando += ele apenas adiciona novo conteúdo a string já existente.

O que tens de fazer é converter os valores para INTERGER antes de calcular.

podemos usar tanto o parseInt quanto o parseFloat,  esse segundo sendo mais aconselhável para tal fim pois podemos ter que calcular valores abstratos.


var input = window.document.getElementById('input');
var resultado = window.document.getElementById('resultado');

function somar() {
  /* var inputValor = parseInt(input.value); // usando parseInt */
  var inputValor = parseFloat(input.value);
  var resultadoValor = parseFloat(resultado.value);
  var calcular = inputValor += (isNaN(resultadoValor) ? 0 : resultadoValor);
  resultado.value = calcular;
}

 

Nossa, isso de fato resolveu meu problema, unica coisa que tive que alterar foi ter de adicionar as variáveis para dentro da function se não me retornava um erro.

 

 

mas fiquei com duvida em uma coisa:

Em 09/11/2019 at 23:09, Omar~ disse:

(isNaN(resultadoValor) ? 0 : resultadoValor);

poderia me explicar o que foi isso de forma menos técnica? como sou leigo no assunto, não entendi essa questão do ? 0 e depois : resultadoValor

Share this post


Link to post
Share on other sites

 

1 hora atrás, Ted2370 disse:

Nossa, isso de fato resolveu meu problema, unica coisa que tive que alterar foi ter de adicionar as variáveis para dentro da function se não me retornava um erro.

Isso porque meu exemplo não foi feito um teste sobre o mesmo apenas escrevi aqui e aplicando a lógica.

No caso as variáveis dos elementos no meu exemplo pertencem ao um objeto window e não a um protótipo de função.

 

 

1 hora atrás, Ted2370 disse:

Nossa, isso de fato resolveu meu problema, unica coisa que tive que alterar foi ter de adicionar as variáveis para dentro da function se não me retornava um erro.

 

 

mas fiquei com duvida em uma coisa:

poderia me explicar o que foi isso de forma menos técnica? como sou leigo no assunto, não entendi essa questão do ? 0 e depois : resultadoValor

Isso é uma condição ternária que significa:

  • Se X for Y seja "zero" caso não seja X

isNaN: estou verificando se o valor não é inteiro, ou seja se ele é null ou qualquer coisa; se for, eu quero que o valor atribuído a variável dentro da condição seja "zero" do contrário seja um INT que assuma então o valor INT da variável.

 

No caso quando se insere pela primeira vez o calculo o valor de resultadoValor será  nulo então a condição diz que calcular deve ser inputValor incrementado com zero ao invés de um valor nulo.

 

Em outras palavas a condição ternária:

var a = "Olá mundo", b;
if (a === "Olá mundo") {
  b = "É o termo que queremos";
} else {
  b = "Não é o termo";
}

// Simplificando com a condição ternária
var a = "Olá mundo", b;
b = (a === "Olá mundo" ? "É o termo que queremos" : "Não é o termo");

Ambos dão o mesmo resultado.

Share this post


Link to post
Share on other sites
14 horas atrás, Omar~ disse:

 

Isso porque meu exemplo não foi feito um teste sobre o mesmo apenas escrevi aqui e aplicando a lógica.

No caso as variáveis dos elementos no meu exemplo pertencem ao um objeto window e não a um protótipo de função.

 

 

Isso é uma condição ternária que significa:

  • Se X for Y seja "zero" caso não seja X

isNaN: estou verificando se o valor não é inteiro, ou seja se ele é null ou qualquer coisa; se for, eu quero que o valor atribuído a variável dentro da condição seja "zero" do contrário seja um INT que assuma então o valor INT da variável.

 

No caso quando se insere pela primeira vez o calculo o valor de resultadoValor será  nulo então a condição diz que calcular deve ser inputValor incrementado com zero ao invés de um valor nulo.

 

Em outras palavas a condição ternária:


var a = "Olá mundo", b;
if (a === "Olá mundo") {
  b = "É o termo que queremos";
} else {
  b = "Não é o termo";
}

// Simplificando com a condição ternária
var a = "Olá mundo", b;
b = (a === "Olá mundo" ? "É o termo que queremos" : "Não é o termo");

Ambos dão o mesmo resultado.

Caramba, incrível, você acabou d me dar uma aula kkk.

Agora entendi!!

E uma pena que o fórum ta com algum problema que não estou conseguindo votar a sua resposta com obrigado :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Hacker_Buiu
      Tem que completar o perfil para curtir e ser curtido sem dar erro?
    • By Hacker_Buiu
      Porque não ganho reputação com o meu bom trabalho?
    • By Rasp
      Fala galera! Estou com a seguinte situação e queria uma ajuda de pôr onde seguir o meu raciocínio para resolver:
       
      Possuo um array X com dados que vem do meu backend, exemplo:
       
      array = [ 0: [1, 'Banana', '3.00', '...'], 1: [2, 'Maça', '4.00', '...'], 2: [3, 'Abacaxi', '5.00', '...'] ];
      Monto para o usuário uma tela com a tabela desses dados, com informações resumidas e um botão "detalhar" para exibir o conteúdo em um modal:
       
      | ID | Fruta | Preço| Ação | | 1 | Banana | 3.00 | Detalhar | | 2 | Maça | 4.00 | Detalhar | | 3 | Abacaxi| 5.00 | Detalhar | Até aí tudo certo, funciona redondo. Mas preciso fazer com que ao abrir o modal, independente do registro que cliquei (ID 1, 2 ou 3), eu possa "navegar" entre os outros registros no modal (possuo botões para isso) sem precisar sair do modal, como se fosse uma paginação.
       
      Como poderia construir essa lógica?
    • By Matheus Bispo
      Bom dia.
       
      Estou com uma situação, tenho um Objeto chamado parametros.params.
       
      Dentro deste objeto, pode vir 1 item ou 2 item ou 3 item, enfim, N itens.
       
      Exemplo:
       
      Parametros.params{
      carro: "Gol"
      };
       
      ou
       
      Parametros.params{
      modalidade: "Futebol",
      duracao: 90
      };
       
      Percebem que os nomes dos itens, os valores e a quantidade mudaram, isso é o que acontece no meu caso. Continuando...
       
      Tenho 2 funções:
       
      function chamarmetodo1(argument1, argument2){};
       
      function chamarmetodo2(argument){};
       
      Existe algum método de eu criar algo parecido com isso
       
      chamarmetodo1(parametros.params);
       
      chamarmetodo2(parametros.params);
       
      Ou seja, gostaria de chamar o método que for, indiferente de quantos parâmetros ele espera, e com os itens que vem dentro do meu objeto parametros.params, tem como fazer isso?
       
       
    • By bruno153
      Pessoal, 
       
      preciso super de uma ajuda com o seguinte problema, eu preciso transformar com o javascript um JSON dessa forma:

      {
        "registros": {
          "valores": [
            {
              "label": "DANILO KATHSON BILRO DE SOUZA",
              "data": [
                {
                  "realizado": "96.51"
                },
                {
                  "realizado": "94.58"
                },
                {
                  "realizado": "89.99"
                },
                {
                  "realizado": "93.38"
                }
              ]
            },
            {
              "label": "FRANCISCO GEILSON RAMALHO",
              "data": [
                {
                  "realizado": "88.94"
                },
                {
                  "realizado": "95.95"
                },
                {
                  "realizado": "94.20"
                },
                {
                  "realizado": "92.36"
                }
              ]
            }
          ]
        }
      }
       
      Para que ele fique dessa forma:

      {
        "registros": {
          "valores": [
            {
              "label": "DANILO KATHSON BILRO DE SOUZA",
              "data": ["96.51", "94.58", "89.99", "93.38"]
              ]
            },
            {
              "label": "FRANCISCO GEILSON RAMALHO",
              "data": ["88.94", "95.95", "94.20", "92.36"
              ]
            }
          ]
        }
      }

      poderiam me dar um caminho de como eu poderia fazer isso?

      Desde já, agradeço muito pelo atenção.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.