2012-02-14 113 views
6

我需要将用户输入的两个数字相加。为此,我创建了两个输入字段,使用.val()从两个单独的变量中检索值,然后添加它们。问题是字符串被添加,而不是数字。例如。 2 + 3变成23而不是5.请建议做什么,除了在输入框中使用type = number。用户在文本字段中输入的数字的数值

+0

可能重复[Javascript来字符串转换为数字?](http://stackoverflow.com/questions/2130454/javascript-to-convert-st ring-to-number) – 2012-02-14 16:11:30

回答

6

您可以使用parseInt函数(...)

例子:

var num = parseInt("2", 10) + parseInt("3", 10); 
// num == 5 
+0

如果用户输入'2.5'会怎么样?即使你假定只允许整数,请不要使用'parseInt()'而不使用第二个参数来指定base 10为'parseInt(“2”,10)',否则如果用户输入前导零(例如“077”),它可能(取决于浏览器)被视为八进制;如果用户输入一个前导“0x”,它将被视为十六进制。 – nnnnnn 2013-06-02 02:04:24

4

使用parseInt将字符串转换成一个数字:

var a = '2'; 
var b = '3'; 
var sum = parseInt(a,10) + parseInt(b,10); 
console.log(sum); /* 5 */ 

记住parseInt(str, rad)将只有str实际上包含很多基础rad的,所以如果你想允许其他你会基地工作需要手动检查它们。另外请注意,如果您想要比整数更多,则需要使用parseFloat

+0

如果'a'是''2.5''会怎么样?如果a是“0x77”或“077”,并且您没有指定基数,该怎么办? – nnnnnn 2013-06-02 02:05:30

+0

@nnnnnn:修正了这个问题,那是我最早的答案之一,当时我并没有意识到'parseInt'问题。 – Zeta 2013-06-08 06:20:55

0

要么使用parseInt函数(http://www.w3schools.com/jsref/jsref_parseint.asp)或parseFloat(HTTP ://www.w3schools.com/jsref/jsref_parsefloat.asp)在添加之前转换为数值。 PS:这是简单的答案。你可能想要做一些验证/剥离/修剪等

0

号()是你想要的功能 “123A” 返回NaN

parseInt函数()截断尾随字母 “123A” 返回123

<input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" /> 
相关问题