增加运营问题?

时间:2011-07-27 05:01:01

标签: javascript

您好我正在尝试在javascript中简单添加两个数字。当我试图获取两个输入元素值时,结果是两个数字的串联

以下是代码:

<html>
<title>
</title>
<head>
<script type="text/javascript">
function loggedUser() {
    //Get GUID of logged user
   //alert('success');
   var x, y , result;
   x = document.getElementById('value1').value;
   y = document.getElementById('value2').value;
   result=x+y;
   alert(result);
   document.getElementById('res').value = result;
}
</script>
</head>
<body>
<input type="text" id="value1"><br>
<input type="text" id="value2"><br>
<input type="text" id="res">
<input type="submit" value ="submit" onclick=loggedUser();>
</body>
</html>

5 个答案:

答案 0 :(得分:4)

“+”运算符已超载。如果任何参数是字符串,则它们都将转换为字符串并连接。如果参数是数字,则完成添加。表单控件值始终是字符串。

首先使用以下方法之一将参数转换为数字:

x = Number(document.getElementById('value1').value);

x = parseInt(document.getElementById('value1').value, 10);

x = parsefloat(document.getElementById('value1').value);

x = +document.getElementById('value1').value;

x = document.getElementById('value1').value * 1;

依旧......

哦,你也可以在必要时转换它:

result = Number(x) + Number(y);

答案 1 :(得分:3)

输入字段包含字符串。如果要对两个数字求和,则必须在添加之前将字符串转换为数字 - 否则只需添加两个字符串。根据您想要允许的内容,有很多方法可以做到这一点。这是一个:

   var x, y , result;
   x = Number(document.getElementById('value1').value);
   y = Number(document.getElementById('value2').value);
   result=x+y;
   alert(result);
   document.getElementById('res').value = result;

在此处查看:http://jsfiddle.net/jfriend00/BWW2R/

答案 2 :(得分:1)

document.getElementById('').value返回一个字符串。您需要在其上调用parseInt以使其成为数字。

答案 3 :(得分:1)

这是因为xy实际上是字符串,而不是数字。元素的value字段始终为字符串,因此x+y为您提供xy的连接。

您可以将xy解析为整数并添加解析结果:这将为您提供所需的内容。

答案 4 :(得分:1)

问题是,当您获取这些值时,您将获得一个字符串,结果您正在进行连接。您应该在x和y上使用parseInt,如下所示:

x = parseInt(document.getElementById('value1').value);
y = parseInt(document.getElementById('value2').value);