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

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.

[code]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;
}[/code]

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="-" />

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

@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)

[code]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;

}[/code]

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.