下面的代码没有给出任何预期的输出。我尝试了很多时间来获得确切的输出,但没有用。请让我知道为什么会发生这种情况以及我犯了什么错误。
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>My try</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var a = $("#a").val();
var b = $("#b").val();
$("#bt1").on("click", function(){
var sum = a + b;
alert(sum);
})
})
</script>
</head>
<body>
<input type="text" id="a" name="option">
<input type="text" id="b" name="task">
<input id="bt1" type="button" value="click here"></body>
</html>
答案 0 :(得分:2)
您试图在点击按钮之前获取值。当您致电.val()
时,它会返回一个字符串,当输入的实际值发生变化时,该字符串不会更改。
单击时,值仍然是相同的值,因此输出错误。
相反,您可以将元素保存在变量中,并在单击按钮时获取值。
这应该像魅力一样:
$(document).ready(function(){
var a = $("#a");
var b = $("#b");
$("#submit").on("click", function(){
var sum = parseInt(a.val(), 10) + parseInt(b.val(), 10);
alert(sum);
})
});
正如A. Wolff所提到的,因为.val()
返回字符串,所以添加它们实际上是连接的。因此,您必须先将值强制为数字,因此parseInt()
。
答案 1 :(得分:1)
错误1:尝试在事件调用之前检索值,因此一旦页面加载并且两个文本框都为空,就会检索值。
错误2:您想要sum
,但您只是连接两个strings
而不是int
,以便先通过parse
将int
添加到parseInt()
$(document).ready(function(){
$("#submit").on("click", function(){
var a = $("#a").val();
var b = $("#b").val();
var sum = parseInt(a) + parseInt(b);
alert(sum);
})
})
{{1}}
答案 2 :(得分:0)
$(document).ready(function () {
$("#submit").on("click", function () {
var a = +$("#a").val();
var b = +$("#b").val();
var sum = a + b;
alert(sum);
})
})
答案 3 :(得分:0)
HY!
你做错了两件事:
首先,你应该把get getters放入“click”功能。
$("#submit").on("click", function(){
var a = $("#a").val();
var b = $("#b").val();
总而言之,Jquery默认从值中获取一个字符串,因此您应该将变量(a和b)转换为整数parseInt()