Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo usar o valor de um input dentro de outras funções

Alguém poderia me ajudar?? Pego o primeiro valor e até consigo mostrar ele na tela através da função mostraValor, porém depois não consigo utilizar esse mesmo valor na função calculaValor2 para realizar novas operações. Já faz alguns dias que estou tendo este mesmo problema em diversos outros projetos que tento iniciar, e empaco nisso.


Faturamento: <input id="valor" placeholder="Insira o valor"> <button>mostra</button>
<br>

<div id="div1"></div>

<script>

var valor1 = document.querySelector("#valor");
var botao = document.querySelector("button");
var div1 = document.querySelector("#div1");
var valor2;

function calculaValor2() {
            //aqui ele já não funciona mais, conta como se fosse 0
    valor2 = valor1.value * 2;
}

calculaValor2();

function mostraValor() {
    div1.insertAdjacentHTML('beforeend', valor2);
}

botao.onclick = mostraValor;

</script>
2 respostas
solução!

Oi Juliana!

Primeiro, vamos entender por que o seu código não estava funcionado do jeito esperado.

Seu objetivo é calcular um valor novo quando um botão é pressionado, certo? Portanto este cálculo deve ser executado quando o botão é mostrado. Será que é isso que seu código está fazendo?

Vejamos, a função que é executada no evento onclick é a mostraValor, porém essa função apenas adiciona um texto à div. Ou seja, ela não faz aquilo que você deseja.

Uma solução pra este problema é simplesmente colocar a execução da função calculaValor2 para dentro da função mostraValor da seguinte maneira:

function mostraValor() {
    calculaValor2();
    div1.insertAdjacentHTML('beforeend', valor2);
}

Deste jeito toda vez que o botão for clicado, a variável valor2 terá seu valor atualizado.

Espero que isso seja o suficiente para que você consiga seguir com seus outros projetos! Qualquer coisa é só pedir aqui no fórum de novo!

Boa tarde, Eduardo!

Era isso mesmo. Muito obrigada!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software