我有一个代码,其中有两个函数:
这是我的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和&amp;在文本框中输出6然后输出为456代替15.我做错了什么。如果我必须在文本框上进行验证,它只采用数字或不能为空。那我该怎么做呢
答案 0 :(得分:2)
您获得连锁答案的原因是JavaScript会将传递的参数视为字符串。它们作为字符串传递,因为它们是从文本框的value属性中提取的,这是一个字符串。
这相当于这样做:
alert('4'+'5'+'6'); // Gives '456'
要实际添加数字,您需要先将它们转换为整数。
var a = parseInt(x.value);
var b = parseInt(y.value);
var c = parseInt(z.value);
答案 1 :(得分:1)
当你正在调用x.value
时,它会以字符串形式返回,因此+ operator
将只是连接值。
使用parseInt()将值解析为整数。
var a = parseInt(x.value);
var b = parseInt(y.value);
var c = parseInt(z.value);
答案 2 :(得分:1)
a,b,c被视为字符串,因此+
只是附加它们。
你必须将它们转换为整数,如
var a= parseInt(x.value,10);
var b= parseInt(y.value,10);
var c= parseInt(z.value,10);
在传递给函数Addhardcode