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 Juan Carlos PT
      Olá, eu quero poder pegar um vídeo do meu canal na Nimo TV e deixar ele em sites parceiros para fortalecer a minha divulgação. Só que não consigo capturar o código <video></video> do html5 do site na Nimo TV. Eles não mostram o formato do vídeo:
       

      Se alguém souber me ajudar, terei enorme gratidão!
       
      OBS: Perdão se alguém postou algo parecido aqui no site, não vi!

    • By daviassumpcao
      Pessoal... há valores em um JSON sendo exibidos por um JS (imagem anexo)... preciso verificar se um valor "x" está em um determinado nó do JSON. E a partir daí exibir uma div.... marquei na imagem com um círculo rosa qual valor quero verificar porém meu script não funciona... material de estudo. É possível fazer isso acontecer?
       
      JS
      const jsonCat = vtxctx.categoryId; const catProd = JSON.parse(jsonCat); var divProd = document.getElementById('faq-connect'); if (catProd.categoryId == 10103) { divProd.style.display = 'block'; } else{ divProd.style.display = 'none'; } HTML para exibir uma DIV em caso positivo
      <div class="faq-connect" style="display:none"> <p>Sucesso!</p> </div>  
       

    • By paulinhosupriano
      Bom dia a todos!
       
      Gente, tenho uma dúvida!
       
      Muitos desenvolvedores utilizam o framework nodejs com express para trabalhar com API e também estão utilizando o ADONISJS.
      Minha duvida seria, em alguns projetos devemos criar configurações onde o usuário cliente não poderá ter acesso a visualização dos dados public de constantes de configuração, url ou banco. 
      Como protejo essas informações?
      Muitas dizem que seria o arquivo .env. 
       
      Como protegerei essas informações? 
      Exemplo firabase como proteger os dados token etc.
       
      Poderiam informar tutorial, curso, vídeo algo a respeito do assunto? 
       
      Agradecido!
       
    • By violin101
      Caros amigos, saudações...
       
      Estou com uma dúvida de dados vindo do MySql, para preencher Tabela via AJAX.
       
      Como faço para formatar o CAMPO no formato MOEDA, ou seja:
      o campo vem.: 12.00
      formatar para: 12,00
       
      o código está assim:
      function montaTable(cep){ $.ajax({ url: "<?php echo base_url();?>site/produtos/getByCep", type: "POST", dataType:"json", data:{ cep: cep}, success:function(data){ //Remove Mensagem da Tabela $("#tborden tbody tr.message").remove(); var cols = ""; for (var i = 0; i < data.length; i++) { cols += "<tr>"; cols += "<td>" + data[i].cepRegiao + "</td>"; cols += "<td>" + data[i].frtEntreg + "</td>"; cols += "<td>" + data[i].vlrFrete + "</td>"; //<--como formatar esse campo cols += "</tr>"; } //Atualiza a Tabela $("#tborden tbody").empty(); //Adiciona os Itens a Tabela $("#tborden tbody").append(cols); } });//Fim - ajax Valor Frete }

      Grato,
       
      Cesar
    • By Rodrigo5468
      Olá, tudo bem? Espero que sim.
       
      Eu seguir esse tutorial e essa atualização para conseguir o código final. Mas o meu site fica totalmente, não exibe absolutamente nada. Eu venho aqui recorrer a vocês, pois lá não irei ter nenhum tipo de suporte. Por favor, quem for me auxiliar com esse pequeno problema, leia o tópico do tutorial. Mas o Fruition é um script para personalizar o domínio utilizando o Notion.
      /* CONFIGURATION STARTS HERE */ /* Step 1: enter your domain name like fruitionsite.com */ const MY_DOMAIN = 'DOMINIO'; /* * Step 2: enter your URL slug to page ID mapping * The key on the left is the slug (without the slash) * The value on the right is the Notion page ID */ const SLUG_TO_PAGE = { '': 'CODIGO_DA_PÁGINA_PÚBLICA_DO_NOTION' }; /* Step 3: enter your page title and description for SEO purposes */ const PAGE_TITLE = ''; const PAGE_DESCRIPTION = ''; /* Step 4: enter a Google Font name, you can choose from https://fonts.google.com */ const GOOGLE_FONT = ''; /* Step 5: enter any custom scripts you'd like */ const CUSTOM_SCRIPT = ``; /* CONFIGURATION ENDS HERE */ const PAGE_TO_SLUG = {}; const slugs = []; const pages = []; Object.keys(SLUG_TO_PAGE).forEach(slug => { const page = SLUG_TO_PAGE[slug]; slugs.push(slug); pages.push(page); PAGE_TO_SLUG[page] = slug; }); addEventListener("fetch", event => { event.respondWith(fetchAndApply(event.request)); }); function generateSitemap() { let sitemap = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; slugs.forEach( (slug) => (sitemap += "<url><loc>https://" + MY_DOMAIN + "/" + slug + "</loc></url>") ); sitemap += "</urlset>"; return sitemap; } const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, HEAD, POST, PUT, OPTIONS", "Access-Control-Allow-Headers": "Content-Type" }; function handleOptions(request) { if ( request.headers.get("Origin") !== null && request.headers.get("Access-Control-Request-Method") !== null && request.headers.get("Access-Control-Request-Headers") !== null ) { // Handle CORS pre-flight request. return new Response(null, { headers: corsHeaders }); } else { // Handle standard OPTIONS request. return new Response(null, { headers: { Allow: "GET, HEAD, POST, PUT, OPTIONS" } }); } } async function fetchAndApply(request) { if (request.method === "OPTIONS") { return handleOptions(request); } let url = new URL(request.url); url.hostname = 'www.notion.so'; if (url.pathname === "/robots.txt") { return new Response("Sitemap: https://" + MY_DOMAIN + "/sitemap.xml"); } if (url.pathname === "/sitemap.xml") { let response = new Response(generateSitemap()); response.headers.set("content-type", "application/xml"); return response; } let response; if (url.pathname.startsWith("/app") && url.pathname.endsWith("js")) { response = await fetch(url.toString()); let body = await response.text(); response = new Response( body .replace(/www.notion.so/g, MY_DOMAIN) .replace(/notion.so/g, MY_DOMAIN), response ); response.headers.set("Content-Type", "application/x-javascript"); return response; } else if (url.pathname.startsWith("/api")) { // Forward API response = await fetch(url.toString(), { body: request.body, headers: { "content-type": "application/json;charset=UTF-8", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" }, method: "POST" }); response = new Response(response.body, response); response.headers.set("Access-Control-Allow-Origin", "*"); return response; } else if (slugs.indexOf(url.pathname.slice(1)) > -1) { const pageId = SLUG_TO_PAGE[url.pathname.slice(1)]; return Response.redirect("https://" + MY_DOMAIN + "/" + pageId, 301); } else { response = await fetch(url.toString(), { body: request.body, headers: request.headers, method: request.method }); response = new Response(response.body, response); response.headers.delete("Content-Security-Policy"); response.headers.delete("X-Content-Security-Policy"); } return appendJavascript(response, SLUG_TO_PAGE); } class MetaRewriter { element(element) { if (PAGE_TITLE !== "") { if ( element.getAttribute("property") === "og:title" || element.getAttribute("name") === "twitter:title" ) { element.setAttribute("content", PAGE_TITLE); } if (element.tagName === "title") { element.setInnerContent(PAGE_TITLE); } } if (PAGE_DESCRIPTION !== "") { if ( element.getAttribute("name") === "description" || element.getAttribute("property") === "og:description" || element.getAttribute("name") === "twitter:description" ) { element.setAttribute("content", PAGE_DESCRIPTION); } } if ( element.getAttribute("property") === "og:url" || element.getAttribute("name") === "twitter:url" ) { element.setAttribute("content", MY_DOMAIN); } if (element.getAttribute("name") === "apple-itunes-app") { element.remove(); } } } class HeadRewriter { element(element) { if (GOOGLE_FONT !== "") { element.append( `<link href='https://fonts.googleapis.com/css?family=${GOOGLE_FONT.replace(' ', '+')}:Regular,Bold,Italic&display=swap' rel='stylesheet'> <style>* { font-family: "${GOOGLE_FONT}" !important; }</style>`, { html: true } ); } element.append( `<style> div.notion-topbar > div > div:nth-child(3) { display: none !important; } div.notion-topbar > div > div:nth-child(4) { display: none !important; } div.notion-topbar > div > div:nth-child(5) { display: none !important; } div.notion-topbar > div > div:nth-child(6) { display: none !important; } div.notion-topbar-mobile > div:nth-child(3) { display: none !important; } div.notion-topbar-mobile > div:nth-child(4) { display: none !important; } div.notion-topbar > div > div:nth-child(1n).toggle-mode { display: block !important; } div.notion-topbar-mobile > div:nth-child(1n).toggle-mode { display: block !important; } </style>`, { html: true } ); } } class BodyRewriter { constructor(SLUG_TO_PAGE) { this.SLUG_TO_PAGE = SLUG_TO_PAGE; } element(element) { element.append( `<script> const SLUG_TO_PAGE = ${JSON.stringify(this.SLUG_TO_PAGE)}; const PAGE_TO_SLUG = {}; const slugs = []; const pages = []; const el = document.createElement('div'); let redirected = false; Object.keys(SLUG_TO_PAGE).forEach(slug => { const page = SLUG_TO_PAGE[slug]; slugs.push(slug); pages.push(page); PAGE_TO_SLUG[page] = slug; }); function getPage() { return location.pathname.slice(-32); } function getSlug() { return location.pathname.slice(1); } function updateSlug() { const slug = PAGE_TO_SLUG[getPage()]; if (slug != null) { history.replaceState(history.state, '', '/' + slug); } } function onDark() { el.innerHTML = '<div title="Change to Light Mode" style="margin-left: auto; margin-right: 14px; min-width: 0px;"><div role="button" tabindex="0" style="user-select: none; transition: background 120ms ease-in 0s; cursor: pointer; border-radius: 44px;"><div style="display: flex; flex-shrink: 0; height: 14px; width: 26px; border-radius: 44px; padding: 2px; box-sizing: content-box; background: rgb(46, 170, 220); transition: background 200ms ease 0s, box-shadow 200ms ease 0s;"><div style="width: 14px; height: 14px; border-radius: 44px; background: white; transition: transform 200ms ease-out 0s, background 200ms ease-out 0s; transform: translateX(12px) translateY(0px);"></div></div></div></div>'; document.body.classList.add('dark'); __console.environment.ThemeStore.setState({ mode: 'dark' }); }; function onLight() { el.innerHTML = '<div title="Change to Dark Mode" style="margin-left: auto; margin-right: 14px; min-width: 0px;"><div role="button" tabindex="0" style="user-select: none; transition: background 120ms ease-in 0s; cursor: pointer; border-radius: 44px;"><div style="display: flex; flex-shrink: 0; height: 14px; width: 26px; border-radius: 44px; padding: 2px; box-sizing: content-box; background: rgba(135, 131, 120, 0.3); transition: background 200ms ease 0s, box-shadow 200ms ease 0s;"><div style="width: 14px; height: 14px; border-radius: 44px; background: white; transition: transform 200ms ease-out 0s, background 200ms ease-out 0s; transform: translateX(0px) translateY(0px);"></div></div></div></div>'; document.body.classList.remove('dark'); __console.environment.ThemeStore.setState({ mode: 'light' }); } function toggle() { if (document.body.classList.contains('dark')) { onLight(); } else { onDark(); } } function addDarkModeButton(device) { const nav = device === 'web' ? document.querySelector('.notion-topbar').firstChild : document.querySelector('.notion-topbar-mobile'); el.className = 'toggle-mode'; el.addEventListener('click', toggle); nav.appendChild(el); onLight(); } const observer = new MutationObserver(function() { if (redirected) return; const nav = document.querySelector('.notion-topbar'); const mobileNav = document.querySelector('.notion-topbar-mobile'); if (nav && nav.firstChild && nav.firstChild.firstChild || mobileNav && mobileNav.firstChild) { redirected = true; updateSlug(); addDarkModeButton(nav ? 'web' : 'mobile'); const onpopstate = window.onpopstate; window.onpopstate = function() { if (slugs.includes(getSlug())) { const page = SLUG_TO_PAGE[getSlug()]; if (page) { history.replaceState(history.state, 'bypass', '/' + page); } } onpopstate.apply(this, [].slice.call(arguments)); updateSlug(); }; } }); observer.observe(document.querySelector('#notion-app'), { childList: true, subtree: true, }); const replaceState = window.history.replaceState; window.history.replaceState = function(state) { if (arguments[1] !== 'bypass' && slugs.includes(getSlug())) return; return replaceState.apply(window.history, arguments); }; const pushState = window.history.pushState; window.history.pushState = function(state) { const dest = new URL(location.protocol + location.host + arguments[2]); const id = dest.pathname.slice(-32); if (pages.includes(id)) { arguments[2] = '/' + PAGE_TO_SLUG[id]; } return pushState.apply(window.history, arguments); }; const open = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function() { arguments[1] = arguments[1].replace('${MY_DOMAIN}', 'www.notion.so'); return open.apply(this, [].slice.call(arguments)); }; </script>${CUSTOM_SCRIPT}`, { html: true } ); } } async function appendJavascript(res, SLUG_TO_PAGE) { return new HTMLRewriter() .on("title", new MetaRewriter()) .on("meta", new MetaRewriter()) .on("head", new HeadRewriter()) .on("body", new BodyRewriter(SLUG_TO_PAGE)) .transform(res); }  
      Tem alguma coisa de errado?
×

Important Information

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