0

我有一个代码,其中有两个功能:

  • 在第一个函数中,硬编码值正在进行
  • 在第二个函数中,值是动态的。

这是我的 HTML

<input type="text" name="txt1" id="txt1">
<input type="text" name="txt2" id="txt2">
<input type="text" name="txt3" id="txt3">
<input type="submit" value= "ADD Value" onclick="Addhardcode(1,2,3)">
<input type="submit" value="Add" onclick ="Add()">

脚本:

<script type="text/javascript">
<!--
function Addhardcode(a,b,c)
{
    a+b+c;
    alert(a+b+c);
}
function Add()
{
    var x= document.getElementById("txt1")
    var y= document.getElementById("txt2")
    var z= document.getElementById("txt3")
    var a=x.value;
    var b=y.value;
    var c=z.value;

    Addhardcode(a,b,c);
}
//-->
</script>

单击按钮时,ADD Value我得到正确的答案,但是,单击按钮时,Add我没有得到正确的答案。如果我在文本框中传递 4 ,5& 6 则输出为 456 而不是 15。我做错了什么。如果我必须对文本框进行验证,它只需要数字或者不能为空。那我该怎么办

4

3 回答 3

2

您获得连接答案的原因是 JavaScript 会将传递的参数视为字符串。它们作为字符串传递,因为它们是从文本框的 value 属性中提取的,该属性是一个字符串。

这相当于这样做:

alert('4'+'5'+'6'); // Gives '456'

要实际添加数字,您需要先将它们转换为整数。

var a = parseInt(x.value);
var b = parseInt(y.value);
var c = parseInt(z.value);
于 2013-09-05T18:50:30.397 回答
1

当您当前调用x.value它时,它会以字符串形式返回,因此+ operator只会连接这些值。

使用parseInt()将值解析为整数。

 var a = parseInt(x.value);
 var b = parseInt(y.value);
 var c = parseInt(z.value);
于 2013-09-05T18:46:32.087 回答
1

在您的代码中,a、b、c 被视为字符串,因此+只是附加它们。

您必须将它们转换为整数,例如

       var a= parseInt(x.value,10);
       var b= parseInt(y.value,10);
       var c= parseInt(z.value,10);

在传递给函数之前Addhardcode

于 2013-09-05T18:50:20.743 回答