[JavaScript/Operações Matematicas] Soma esta concatenando! e subtração não funciona

3 respostas
F

Como é uma duvida bem bestinha, vou colocar só a parte que esta com "problema"

a minha função Somar() esta concatenando! mesmo eu convertendo para parseInt()!! (talvez eu esteja convertendo de modo errado....)
a minha função Menas() nem ao mesmo esta funcionando!

se alguem puder me dar uma luz rsrs.

function Somar() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var soma = num1+num2;
document.getElementById("result").value = soma;
return true;
}

function Menas() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var subtra = num1 - num2;
document.getElementById("result").value = subtra;
return true;
}

Os botões que vão acionar esses 2 metodos estão assim.

<input type="button" onclick="Somar()"  name="button" id="mais" value="+" />
<input type="button" onclick="Subtra()" name="button2" id="menos" value="-" />

3 Respostas

D

Sim, ao fazer isto:

var num1 = document.getElementById("num1").value;

você tem uma variável textual como uma String.

É preciso dizer ao javascript que ele irá trabalhar com números.
Isso deve ser feito variável por variável

valor1 = new Number(document.formCalc.campo1.value);
 valor2 = new Number(document.formCalc.campo2.value);
 valor3 = new Number(document.formCalc.campo3.value);
 valor4 = new Number(document.formCalc.campo4.value);
 var resultado = new Number(valor1 + valor2 + valor3 + valor4);

Manjou?

E, por favor, mude a function Menas, isso me recorda da @Cleicyane

F

@drsmachado

Muito obrigado! problema resolvido. e desculpe por despertar lembranças da tal fulana! prometo mudar a função Menas() para Subtrar() rsrs.

so me restou 2 duvidas.

1° em que casos eu teria que utilizar o parseInt? ja que nesse caso resolveu com o new Number.
2° porque minhas outras 2 funções que estava iguais funcionou sem essa conversão! (divisão e vezes)

function Vezas() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var vvezes = num1 * num2;
document.getElementById("result").value = vvezes;
return true;

}

function Divas() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var dividir = num1 / num2;
document.getElementById("result").value = dividir;
return true;

}
D

Então, javascript interpreta o operando + como concatenador. Por isso você precisa explicitar a conversão.
É possível substituir o new Number por parseInt (ou valueOf, se não me engano), também.

Criado 5 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 3
Participantes 2