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 turfeaugusto2
      ola sou novo no forum.
      e novo em programaçao
      gostaria da ajuda pra saber como trocar imagens de divs diferentes,pois uma estra trocando a imagem da outra
      e ja´tentei de tudo pra consertar..agradeço muito pela ajuda
       
       
      <!DOCTYPE html>
      <html lang="en" dir="ltr">
        <head>
        <style>
        
        *{margin:0;padding:0;}

      .container{display:flex;justify-content:space-evenly;flex-wrap:wrap;background:#6ab04c;}
      .card img{width:100%}
      .price {position:absolute;margin:10px 220px;color: #6ab04c;font-size: 20px;}
      .card{width:260px;height:350px;justify-content:center;background:#fff;margin:5px}
      .nav{display:flex;align-items:center;justify-content:center}
      .nav img{display:flex-row;width:80px;height:52px;margin:2px;border: 1px solid #ddd;}
        .name{
        text-transform: uppercase;
        font-size: 20px;
        color: #333;
      }
      .btn{
       display:flex;justify-content:center;padding:5px;
        background: #6ab04c;
        text-align: center;
        color: #fff;
        
      transition: 0.3s;}
      .dis{
          margin:0 0 10px;
        font-size: 16px;
      opacity: 0.7;}
      .product-info{
        padding: 20px;background:silver;
      }
      .btn:hover{
        background: #333;
      }
      </style>
          <meta charset="utf-8">
          <title></title>
          <link rel="stylesheet" href="style.css">
        </head>
        <body>
        <div class="container">
      <div class="card">
        <div class="top-section">
          <div class="price">$80</div><img id="image-container" src="1.png" alt="">
          <div class="nav">
            <img onclick="change_img(this)" src="1.png" alt="">
            <img onclick="change_img(this)" src="2.png" alt="">
            <img onclick="change_img(this)" src="3.png" alt="">
          </div>
          
        </div>
        <div class="product-info">
          <div class="name">Sanglasses</div>
          <div class="dis">Awesome Men Sanglasses</div>
          <a class="btn" href="#">Add to Cart</a>
        </div>
      </div>
      <div class="card">
        <div class="top-section">
          <div class="price">$80</div><img id="image-container" src="1.png" alt="">
          <div class="nav">
            <img onclick="change_img(this)" src="1.png" alt="">
            <img onclick="change_img(this)" src="2.png" alt="">
            <img onclick="change_img(this)" src="3.png" alt="">
          </div>
          
        </div>
        <div class="product-info">
          <div class="name">Sanglasses</div>
          <div class="dis">Awesome Men Sanglasses</div>
          <a class="btn" href="#">Add to Cart</a>
        </div>
      </div>
      <div class="card">
        <div class="top-section">
          <div class="price">$80</div><img id="image-container" src="1.png" alt="">
          <div class="nav">
            <img onclick="change_img(this)" src="1.png" alt="">
            <img onclick="change_img(this)" src="2.png" alt="">
            <img onclick="change_img(this)" src="3.png" alt="">
          </div>
          
        </div>
        <div class="product-info">
          <div class="name">Sanglasses</div>
          <div class="dis">Awesome Men Sanglasses</div>
          <a class="btn" href="#">Add to Cart</a>
        </div>
      </div>
      </div>
        <script type="text/javascript">
          var container = document.getElementById("image-container");
          function change_img(image) {
            container.src = image.src;
          }
        </script>
        </body>
      </html>
    • By dimoreira
      Boa noite programadores, estou a procura de um profissional que desenvolva um site simples, que tem apenas que me mostrar os resultados em tempo real da pagina de resultados da bet 365. Mas especificamente do futebol virtual. Vou mandar em anexo uma foto pra ter como base.   O modelo mais simples possivel é somente para acompanhar os resultados em tempo real sem ter q esta acessando o site da bet.


    • By violin101
      Caros amigos, saudações...
       
      Gostaria de tirar uma dúvida com os amigos, referente JAVASCRIPT.
       
      Estou escrevendo uma rotina, onde o USUÁRIO selecione o Produto e informe o valor de Desconto que deseja informar para o produto. <<=== ATÉ AQUI TUDO BEM.
       
      Minha dúvida:
      tem como pelo o JAVASCRIPT no ato da seleção do PRODUTO o sistema informar se este Produto já foi cadastrado no MYSQL ?
       
      Abaixo posto o código que estou usando para selecionar o Produto.
      MODAL
      <!-- Modal eu utilizo para Selecionar o Produto --> <div class="modal fade" id="modal_prod"> <div class="modal-dialog" style="width:80%;"> <div class="modal-content"> <div class="modal-header" style="font-size:18px; color:#ffffff; background:#307192;"> <h4 class="modal-title"><strong>Lista de Produtos</strong></h4> </div> <div class="modal-body"> <table id="tab_prod" class="table table-bordered table-hover"> <thead> <tr> <th style="text-align:center;">Cód. Interno</th> <th style="text-align:center;">Descrição do Produto</th> <th style="text-align:center;">Valor Venda</th> <th style="text-align:center;">Categoria</th> <th style="text-align:center;">Ação</th> </tr> </thead> <tbody> <?php if(!empty($prods)){ foreach ($prods as $prd) { //Variável criada para carregar informção dos Dados para o Botão $dataprd = $prd->idProdutos."*".$prd->cod_interno."*".$prd->descricao."*".$prd->valor_venda."*".$prd->categoria; echo '<tr>'; echo '<td width="20" height="10" style="text-align:center;">'.$prd->cod_interno.'</td>'; echo '<td width="250" height="10" style="text-align:left;">'.$prd->descricao.'</td>'; echo '<td width="20" height="10" style="text-align:right;">'.$prd->valor_venda.'</td>'; echo '<td width="20" height="10" style="text-align:center;">'.$prd->categoria.'</td>'; echo '<td width="20" style="text-align:center;"> <button type="button" class="btn btn-success btn-prod" style="margin-right: 2%; padding: 5px 7px;" title="Selecionar Fornecedor" value="'. $dataprd.'" > <span class="fa fa-check"></span> </button></td>'; echo '</tr>'; }//Fim do Foreach }//Fim do IF ?> </tbody> </table> </div> <div class="modal-footer" style="text-align:center; background:#BBAAAA;"> <button type="button" class="btn btn-danger pull-center" data-dismiss="modal">Voltar</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div>  
      Código em JAVASCRIPT que uso para AGREGAR o Produto na Tabela
      /*---Função para Capturar o Produto selecionado na Modal---*/ $(document).on("click",".btn-prod",function(){ prd = $(this).val(); infoprd = prd.split("*"); $("#idProdutos").val(infoprd[0]); $("#cod_interno").val(infoprd[1]); $("#descricao").val(infoprd[2]); $("#valor_venda").val(infoprd[3]); $("#categoria").val(infoprd[4]); $("#modal_prod").modal("hide"); //Função para Atualizar o Status do Botão statusLimparAgregar() }); //Função para AGREGAR o Item selecionado na Tabela $("#btn-agregar").on("click",function(){ var dsct = document.getElementById("dsct").value; var vlrtotal = document.getElementById("vlrtotal").value; if(dsct == "" || vlrtotal == ""){ alert("Atenção! Nenhuma QUANTIDADE ou VALOR foi informado."); } else { html = "<tr>"; html += "<td width='10%' height='10'><input type='hidden' name='id_prds[]' value='"+infoprd[0]+"'>"+infoprd[1]+"</td>"; html += "<td width='42%' height='10'><input type='hidden' name='descricao[]' value='"+infoprd[2]+"'>"+infoprd[2]+" - <strong style='font-size:12px;'>CATEGORIA: </strong> "+infoprd[4]+"</td>"; html += "<td width='10%' height='10' style='text-align:center;'><input type='hidden' name='vda[]' value='"+infoprd[3]+"'>"+infoprd[3]+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'><input type='hidden' name='desc[]' value='"+dsct+"'>"+dsct+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'><input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-danger btn-remove-produto' style='padding: 2px 5px;' title='Remover Item da Lista'>"+ "<span class='fa fa-remove'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); itens(); $("#btn-agregar").val(null); $("#descricao").val(null); $("#cod_interno").val(null); $("#valor_venda").val(null); $("#categoria").val(null); $("#dsct").val(null); $("#vlrtotal").val(null); //Desabilita Buttons document.getElementById("btn-limp").disabled = true; document.getElementById("btn-agregar").disabled = true; } });  
      Grato,
       
      Cesar
    • By Sapinn
      Iai galera blz? Tô com uma duvida aqui. Eu tenho um menu Vertical Tabs que basicamente me ajuda a navegar em uma pagina sem precisar criar varias rotas para outras paginas. Segue o codigo:
      <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> * {box-sizing: border-box} body {font-family: "Lato", sans-serif;} /* Style the tab */ .tab { float: left; border: 1px solid #ccc; background-color: #f1f1f1; width: 30%; height: 300px; } /* Style the buttons inside the tab */ .tab button { display: block; background-color: inherit; color: black; padding: 22px 16px; width: 100%; border: none; outline: none; text-align: left; cursor: pointer; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current "tab button" class */ .tab button.active { background-color: #ccc; } /* Style the tab content */ .tabcontent { float: left; padding: 0px 12px; border: 1px solid #ccc; width: 70%; border-left: none; height: 300px; } </style> </head> <body> <h2>Vertical Tabs</h2> <p>Click on the buttons inside the tabbed menu:</p> <div class="tab"> <button class="tablinks" onclick="openCity(event, 'London')" id="defaultOpen">London</button> <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button> <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button> </div> <div id="London" class="tabcontent"> <h3>London</h3> <p>London is the capital city of England.</p> </div> <div id="Paris" class="tabcontent"> <h3>Paris</h3> <p>Paris is the capital of France.</p> </div> <div id="Tokyo" class="tabcontent"> <h3>Tokyo</h3> <p>Tokyo is the capital of Japan.</p> </div> <script> function openCity(evt, cityName) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(cityName).style.display = "block"; evt.currentTarget.className += " active"; } // Get the element with id="defaultOpen" and click on it document.getElementById("defaultOpen").click(); </script> </body> </html> Fonte: https://www.w3schools.com/howto/howto_js_vertical_tabs.asp
      Blz, agora digamos que eu tenha saído da pagina onde tem esse Vertical tab e quando retornar eu gostaria de voltar justamente do lugar de onde eu sai.
      Por exemplo, digamos que eu tenha saído do menu na parti Paris para uma pagina onde tem tudo de Paris quando eu apertar no botão voltar eu quero retornar a pagina onde tem o menu e quero que ele fique na opção Paris inclusive marcado. Quando ele volta ele só vai para a primeira opção.
      Tem algum jeito de fazer isso?
    • By Rebeca Julia Bronzatti
      Eu tô fazendo um site pra uma imobiliária e nele eu possui filtros que não são obrigatórios e nem possuem submit, ex: quantidade de quartos, quantidade de vagas, localização e assim por diante, algo em torno de 15 filtros o usuário pode escolher os filtros que deseja e assim o site realizar uma busca, como não tenho submit tô usando ajax e javascript pra conseguir recuperar os valores, o meu problema está em executar um query com esses valores, eu tô com um form de teste com dois campos só, porém ele não ta executando redondinho do jeito que  preciso, tenho um input e um select se eu selecionar um dos dois ele executa a query mas mostra que a outra não está definida, se eu preencho as duas ele não executa a query, se alguém puder me dar um help em como fazer isso agradeceria muito, tô enrolada nisso faz um tempinho já
      <body> <form method="POST" id="form-pesquisa" action=""> <input type="text" id="pesquisa" style="width: 35%; height: 40px; text-align: center; font-size: 25px;"/> <select name="idade" id="select_idade"> <option value="19" selected>19</option> <option value="18">18</option> </select> </form> <div class="resultado" style="border: 1px solid #222; width: 35%; margin-top: 30px; height: 30px;"> </div> </body> $(function(){ $("#select_idade").change(function(){ var select_idade = $(this).val(); if(select_idade != ''){ var select = { idade : select_idade } $.post('busca_banco.php', select, function(retorna){ $(".resultado").html(retorna); }); }else{ $(".resultado").html(''); } }); //Pesquisar sem refresh na página $("#pesquisa").keyup(function(){ var pesquisa = $(this).val(); //Verifica se há algo digitado if(pesquisa != ''){ var dados = { palavra : pesquisa } $.post('busca_banco.php', dados, function(retorna){ //Mostra dentro da div os resultados obtidos $(".resultado").html(retorna); }); }else{ $(".resultado").html(''); } }); }); $idade = $_POST['idade']; $busca = $_POST['palavra']; $busca_select = "SELECT * FROM teste WHERE TRUE AND IF('$idade' != 0, TRUE) AND IF('$busca' !=0, TRUE)"; $result_busca = mysqli_query($cnn, $busca_select); if(mysqli_num_rows($result_busca)<=0){ echo '<div style = "width:80%; overflow:auto; border-bottom:1px solid #333"> Não existe resultado </div> '; }else{ while ($rows = mysqli_fetch_assoc($result_busca)){ echo '<div style = "width:35%; overflow:auto; border-bottom:1px solid #333"> '.$rows['idade'].' - '.$rows['palavra'].' <br> </div> '; } }  
×

Important Information

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