使用一元+号运算符使类型转向Number

在javascript中,”+”号运算符同时充当数学加号和连接符。这会在form表单的域值相加时出现问题,例如,因为javascript是一个弱类型语言,form 域的值将会被当作数组来处理,而你把它们”+”一起的时候,”+”将被当成连接符,而非数学加号。

有问题的例子:

<form name="myform" action="[url]">
<input type="text" name="val1" value="1">
<input type="text" name="val2" value="2">
</form>

function total() {
 var theform = document.forms["myform"];
 var total = theform.elements["val1"].value + theform.elements["val2"].value;
 alert(total); // 这个将会弹出 "12", 但你想要的是 3!
}

解决这个问题,javascript 需要一个提示来让它把这些值当做数字来处理。你可以使用”+”号来把数组转换成数字。给变量或者表达式前置一个”+”号将会强制其当作一个数字来处理,而这也将使得数学”+”得以成功应用。

修改好的代码:

function total() {
 var theform = document.forms["myform"];
 var total = (+theform.elements["val1"].value) + (+theform.elements["val2"].value);
 alert(total); // This will alert 3
}
posted @ 2013-05-17 14:23  HolyGrail  阅读(126)  评论(0)    收藏  举报
设计良好的程序将用户的注意力视为有限的宝贵资源,只有在必要时才要求使用。 ——《Unix编程艺术》