2013-09-25 30 views
0

由于某些原因,当返回的值应该是3并将数字加在一起时,我的代码返回“0111”。jquery将输入值加在一起

有没有更好的方式来写这个,所以它增加了输入文本的值?

var p = $(".p").val(); 
var r = $(".r").val(); 
var d = $(".d").val(); 
var s = $(".s").val(); 

var checkability = p + r + d + s; 

alert(checkability) 

回答

3

您正在连接需要将它转换为数字的字符串。 val()以字符串形式返回数据,或根据您的类型明确使用parseInt(var, 10)parseFloat

简单的方法就是T选用unary + operator作为变量的前缀:

var checkability = +p + +r + +d + +s; 

Fiddle

0

当然,最简单的事情是将字符串值强制到像整数:

var p = +$(".p").val(); 
var r = +$(".r").val(); 
var d = +$(".d").val(); 
var s = +$(".s").val(); 

jsFiddle example

你也可以使用更长的parseInt()功能像var p = parseInt($(".p").val(), 10);

0

使用parseInt函数,使它们为整数

var p = parseInt($(".p").val(),10); 
var r = parseInt($(".r").val(),10); 
var d = parseInt($(".d").val(),10); 
var s = parseInt($(".s").val(),10); 

var checkability = p + r + d + s; 

alert(checkability) 
+1

不要使用'parseInt'没有基数,加倍所以如果你正在处理用户输入。 – Quentin

+0

@Quentin如果你想支持用户输入的十六进制和十进制怎么办? :) –

+0

@BarbaraLaird - 然后,最好用一个清晰​​的单选按钮,用户界面处理:) – Quentin