Fórum Somar valores em JavaScript #440126
18/04/2013
0
Tenho a seguinte função em JavaScript:
1 2 3 4 5 6 7 8 | < script type = "text/javascript" > function somarValores(){ var s1 = document.getElementById("txt1").value; var s2 = document.getElementById("txt2").value; var s3 = s1*s2; alert(s3); } </ script > |
E os seguintes campos em HTML:
1 2 3 4 5 6 7 8 | < fieldset > < legend >Cálculo do salário</ legend > < label >Valor 1:</ label > < input id = "txt1" type = "text" /> < label >Valor 2: </ label > < input id = "txt2" type = "text" /> < button id = "somar" onclick = "somarValores()" >Somar</ button > </ fieldset > |
A ideia era digitar um valor em cada input e mostra a soma dos dois. Só que ao invés de somar, está juntando os dois valores. Por exemplo, se digitar 1 e 2, ao invés de dar 3, tá dando 12.
Testei com as outras operações (multiplicação, divisão e subtração) e deu certo. Só não dá com a soma.
Como estou começando com JavaScript, não consigo entender o que está havendo.
Se alguém puder me ajudar, eu agradeço.

Carlos Andriê
Curtir tópico
+ 1Post mais votado
18/04/2013
Quando vamos trabalhar com operações matemáticas (/, * e -) em javascript geralmente aplicamos o sinal entre os valores e pronto, vamos ter um resultado da operação selecionada.
Exemplo:
1 2 3 | x / y = n x * y = n x - y = n |
Mas quando se trata da soma (+), temos que imaginar que para concatenar strings também usamos o sina de "+", então temos que converter explicitamente os valores em números, para que não ocorra uma concatenação:
Exemplo:
2 + 2 = 22
parseint(2) + parseint(2) = 4
Espero ter ajudado ...
William

Gostei + 6
Mais Posts
18/04/2013
Carlos Andriê
Obrigado.
Gostei + 0
18/04/2013
Carlos Andriê
1 2 3 4 5 6 | function somarValores(){ var s1 = document.getElementById("txt1").value; var s2 = document.getElementById("txt2").value; var s3 = s1 + s2; alert(s3); } |
Gostei + 0
18/04/2013
Roniere Almeida
pesquisei um pouco e fazendo alguns testes, notei que vc deve utilizar "parseInt" nas variaveis(javascript)
veja o codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | < html > < head > < script type = "text/javascript" > function somarValores(){ var s1 = document.getElementById("s1").value; var s2 = document.getElementById("s2").value; var s3 = parseInt(s1) + parseInt(s2); alert(s3); } </ script > </ head > < body > < fieldset > < legend >Cálculo do salário</ legend > < label >Valor 1:</ label > < input id = "s1" type = "text" /> < label >Valor 2: </ label > < input id = "s2" type = "text" /> < button id = "somar" onclick = "somarValores()" >Somar</ button > </ fieldset > </ body > </ html > |
Gostei + 3
18/04/2013
Carlos Andriê
Mas não entendi por que com as outras operações dá certo. Sem querer abusar, vocÊ saberia me dizer o motivo?
Grato.
Gostei + 0
18/04/2013
Roniere Almeida
Gostei + 0
18/04/2013
Roniere Almeida
Mas não entendi por que com as outras operações dá certo. Sem querer abusar, vocÊ saberia me dizer o motivo?
Grato.
ahhh, de nada, precisando, estamos aqui para ajudar!!!
Gostei + 0
18/04/2013
Joel Rodrigues
Resumidamente, JavaScript, diferente da maioria das linguagens server-side/back-end, não tem uma tipagem forte, ou seja, não é necessário declarar o tipo de variável como int, decimal, string, etc. Apenas var permite a utilização de vários tipos de dado.
Por isso ocorre o que o colega citou acima. Quando você passa os valores dos inputs (que são textos) para as variáveis s1 e s2, elas são consideradas texto, a menos que seja efetuada uma operação como multiplicação, que explicita que aqueles são valores numéricos.
Um abraço a todos.
Gostei + 1
18/04/2013
Carlos Andriê
Muito obrigado a todos pela ajuda, Roniere, wllfl e Joel.
A questão está resolvida e muito bem explicada.
Gostei + 1
18/04/2013
Joel Rodrigues
Estou então marcando este tópico como Concluído.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)