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

Alguém poderia me ajudar a entender qual meu erro?

Alguém poderia por favor me ajudar a entender qual meu erro? Obrigado...

<meta charset="UTF-8">


<input id="entradaSomaNum1"/>
+
<input id="entradaSomaNum2"/>
<button id="botaoSomar"> Somar </button>

<br><br>

<input id="entradaSubtracaoNum1"/>
-
<input id="entradaSubtracaoNum2"/>
<button id="botaoSubtrair"> Subtrair </button>

<br><br>

<input id="entradaMutiplicacaoNum1"/>
*
<input id="entradaMultiplicacaoNum2"/>
<button id="botaoMultiplicar"> Multiplicar </button>

<br><br>

<input id="entradaDivisaoNum1"/>
:
<input id="entradaDivisaoNum2"/>
<button id="botaoDividir"> Dividir </button>


<script>

    function somar() {

        var soma = entradaSomaNum1.value + entradaSomaNum2.value;
        alert(entradaSomaNum1.value + " + "  + entradaSomaNum2.value + " = " + soma);
    }

    function subtrair() {

        var subtracao = entradaSubtracaoNum1.value + entradaSubtracaoNum2.value;
        alert(entradaSubtracaoNum1.value + " + "  + entradaSubtracaoNum2.value + " = " + subtrair);
    }

    function multiplicar() {

        var multiplicar = entradaMutiplicacaoNum1.value + entradaMutiplicacaoNum2.value;
        alert(entradaMutiplicacaoNum1.value + " + "  + entradaMutiplicacaoNum2.value + " = " + multiplicar);
    }

    function dividir() {

        var dividir = entradaDivisaoNum1.value + entradaDivisaoNum2.value;
        alert(entradaDivisaoNum1.value + " + "  + entradaDivisaoNum2.value + " = " + dividir);
    }


    var entradaSomaNum1 = document.querySelector("#entradaSomaNum1");
    var entradaSomaNum2 = document.querySelector("#entradaSomaNum2");
    var botaoSomar = document.querySelector("#botaoSomar");
    botaoSomar.onclick = somar;

    var entradaSubtracaoNum1 = document.querySelector("#entradaSubtracaoNum1");
    var entradaSubtracaoNum2 = document.querySelector("#entradaSubtracaoNum2");
    var botaoSubtrair = document.querySelector("#botaoSubtrair");
    botaoSubtrair.onclick = subtrair;

    var entradaMutiplicacaoNum1 = document.querySelector("#entradaMutiplicacaoNum1");
    var entradaMutiplicacaoNum2 = document.querySelector("#entradaMutiplicacaoNum2");
    var botaoMultiplicar = document.querySelector("#botaoMultiplicar");
    botaoMultiplicar.onclick = multiplicar;

    var entradaDivisaoNum1 = document.querySelector("#entradaDivisaoNum1");
    var entradaDivisaoNum2 = document.querySelector("#entradaDivisaoNum2");
    var botaoDividir = document.querySelector("#botaoDividir");
    botaoDividir.onclick = dividir;
</script>
4 respostas

Oi Daniel, quando pegamos o valor de um campo o tipo dele vem como string, o problema está ai, quando você faz entradaSubtracaoNum1.value + entradaSubtracaoNum2.value o javascript entende que você tá pegando a string "10" e juntando com a string "5" por exemplo, então o resultado sai como 105. Para resolver isso basta convertemos essa string para um numero inteiro, para fazer isso fazemos

var soma = parseInt(entradaSomaNum1.value) + parseInt(entradaSomaNum2.value);

E você faz isso para todas as operações. Mas rodando aqui o seu código eu percebi alguns outros errinhos, são fáceis de serem consertados, o primeiro deles na função de subtrair.

function subtrair() {

        var subtracao = entradaSubtracaoNum1.value + entradaSubtracaoNum2.value;
        alert(entradaSubtracaoNum1.value + " + "  + entradaSubtracaoNum2.value + " = " + subtrair);
    }

O alert como resultado está chamando uma variável chamada subtrair que no caso não existe, pois a variável que guarda o resultado chama subtracao, então faz a troca ai.

Outro errinho que tem é na função de multiplicar, algumas vezes você escreveu sem o L e as vezes com ele. Partes do código que multiplicar ficou sem o L

<input id="entradaMutiplicacaoNum1"/>

 entradaMutiplicacaoNum1.value + entradaMutiplicacaoNum2.value

 var entradaMutiplicacaoNum1 = document.querySelector("#entradaMutiplicacaoNum1");
 var entradaMutiplicacaoNum2 = document.querySelector("#entradaMutiplicacaoNum2");

É por ultimo, todas as suas funções estão somando, então basta trocar o sinal.

solução!

Boa tarde Daniel,

Havia alguns erros no código como variáveis escritas errado (por exemplo "Mutiplicacao" em alguns lugares e "Multiplicacao" em outros).

O principal que faltou foi a função parseInt() para converter o conteúdo das variáveis de texto para número. Sem isso o script apenas concatenava os valores em vez de tratá-los como números e aplicar as devidas operações.

Segue abaixo o código corrigido:

<meta charset="UTF-8">


<input id="entradaSomaNum1"/>
+
<input id="entradaSomaNum2"/>
<button id="botaoSomar"> Somar </button>

<br><br>

<input id="entradaSubtracaoNum1"/>
-
<input id="entradaSubtracaoNum2"/>
<button id="botaoSubtrair"> Subtrair </button>

<br><br>

<input id="entradaMultiplicacaoNum1"/>
*
<input id="entradaMultiplicacaoNum2"/>
<button id="botaoMultiplicar"> Multiplicar </button>

<br><br>

<input id="entradaDivisaoNum1"/>
:
<input id="entradaDivisaoNum2"/>
<button id="botaoDividir"> Dividir </button>


<script>

    function somar() {

        var soma = parseInt(entradaSomaNum1.value) + parseInt(entradaSomaNum2.value);
        alert(entradaSomaNum1.value + " + "  + entradaSomaNum2.value + " = " + soma);
    }

    function subtrair() {

        var subtracao = parseInt(entradaSubtracaoNum1.value) - parseInt(entradaSubtracaoNum2.value);
        alert(entradaSubtracaoNum1.value + " - "  + entradaSubtracaoNum2.value + " = " + subtracao);
    }

    function multiplicar() {

        var multiplicar = parseInt(entradaMultiplicacaoNum1.value) * parseInt(entradaMultiplicacaoNum2.value);
        alert(entradaMultiplicacaoNum1.value + " * "  + entradaMultiplicacaoNum2.value + " = " + multiplicar);
    }

    function dividir() {

        var dividir = parseInt(entradaDivisaoNum1.value) / parseInt(entradaDivisaoNum2.value);
        alert(entradaDivisaoNum1.value + " / "  + entradaDivisaoNum2.value + " = " + dividir);
    }


    var entradaSomaNum1 = document.querySelector("#entradaSomaNum1");
    var entradaSomaNum2 = document.querySelector("#entradaSomaNum2");
    var botaoSomar = document.querySelector("#botaoSomar");
    botaoSomar.onclick = somar;

    var entradaSubtracaoNum1 = document.querySelector("#entradaSubtracaoNum1");
    var entradaSubtracaoNum2 = document.querySelector("#entradaSubtracaoNum2");
    var botaoSubtrair = document.querySelector("#botaoSubtrair");
    botaoSubtrair.onclick = subtrair;

    var entradaMultiplicacaoNum1 = document.querySelector("#entradaMultiplicacaoNum1");
    var entradaMultiplicacaoNum2 = document.querySelector("#entradaMultiplicacaoNum2");
    var botaoMultiplicar = document.querySelector("#botaoMultiplicar");
    botaoMultiplicar.onclick = multiplicar;

    var entradaDivisaoNum1 = document.querySelector("#entradaDivisaoNum1");
    var entradaDivisaoNum2 = document.querySelector("#entradaDivisaoNum2");
    var botaoDividir = document.querySelector("#botaoDividir");
    botaoDividir.onclick = dividir;
</script>

Gente, muuuito obrigado !!! Sem querer abusar, maaas, vocês teriam umas dicas pra que eu não cometa mais esses erros, principalmente com as variáveis? Tem alguma formula para dar nomes a variáveis e funções para não haver confusões como as que eu fiz? Alguma coisa a acrescentar? Não tenho problemas em receber críticas, desde que não haja ofensas... Obrigadão novamente!

Daniel, Não existe uma fórmula para dar nomes a variáveis (não que eu já tenho ouvido falar). É só escolher um nome torne claro para quê ela serve. O problema no seu código era só um erro de digitação. As vezes na hora de copiar e colar, o nome errado pode ter se repetido ao longo do código. Em algumas partes ficou o nome certo e em outras o errado.