【发布时间】:2012-03-06 00:11:39
【问题描述】:
我需要将用户输入的两个数字相加。为此,我创建了两个输入字段,使用 .val() 在两个单独的变量中从中检索值,然后添加它们。问题是添加了字符串而不是数字。例如。 2 + 3 变成 23 而不是 5。请建议做什么,除了在输入框中使用 type = number。
【问题讨论】:
标签: javascript html
我需要将用户输入的两个数字相加。为此,我创建了两个输入字段,使用 .val() 在两个单独的变量中从中检索值,然后添加它们。问题是添加了字符串而不是数字。例如。 2 + 3 变成 23 而不是 5。请建议做什么,除了在输入框中使用 type = number。
【问题讨论】:
标签: javascript html
你可以使用 parseInt(...)
例子:
var num = parseInt("2", 10) + parseInt("3", 10);
// num == 5
【讨论】:
2.5会怎样?即使您假设只允许使用整数,也请不要建议 parseInt() 不使用第二个参数来指定基数为 10 的 parseInt("2",10),否则如果用户输入前导零(例如,“077”),它可能(取决于浏览器)被视为八进制;如果用户输入前导“0x”,它将被视为十六进制。
使用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。
【讨论】:
a 是'2.5' 怎么办?如果 a 是 '0x77' 或 '077' 而您没有指定基数怎么办?
parseInt 的问题。
在添加前使用 parseInt (http://www.w3schools.com/jsref/jsref_parseint.asp) 或 parseFloat (http://www.w3schools.com/jsref/jsref_parsefloat.asp) 转换为数值.
PS:这是简单的答案。您可能想做一些验证/剥离/修剪等。
【讨论】:
Number() 是你想要的函数 "123a" 返回 NAN
parseInt() 截断尾随字母“123a”返回 123
<input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" />
【讨论】: