jquery结果不是即使evrything是正确的
下面的一段代码没有给出任何预期的输出。我尝试了很多时间来得到确切的输出,但没有用。请让我知道为什么会发生这种情况,以及我犯了什么错误。jquery结果不是即使evrything是正确的
<!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>
你正在试图获得点击按钮前值。当您拨打.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.沃尔夫提到的,因为.val()
返回字符串,将它们实际上是串联。所以你必须首先强制数值,因此parseInt()
。
$(document).ready(function() {
$("#submit").on("click", function() {
var a = +$("#a").val();
var b = +$("#b").val();
var sum = a + b;
alert(sum);
})
})
错误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); }) })
也许数字不仅是整数。使用'+'会将它转换为数字 –
得到你的第一点,他们也可以浮动,但我认为他得到了点,并使用正确的'解析'acc。满足他的要求。没有让你第二条语句“使用+将它转换为数字”,你能解释一下吗? – SajjadHashmi
'var a = + $(“#a”)。val();''a'是一个数字(整数或浮点数无关紧要) –
海兰!
你做错了两两件事:
首先,你应该把放干将为“点击”功能。
$("#submit").on("click", function(){
var a = $("#a").val();
var b = $("#b").val();
谢胜利,所有的同时,jQuery的默认情况下得到的字符串从值,所以你应该parseInt()
而且Demo
你在这里连接字符串转换变量(a和b)为整,你必须将输入值转换为数字 –
Excellant !!!赖特答案。谢谢 – Sakthivel
使用parseInt(),你应该总是设置基数的情况下:'parseInt(a.val(),10)' –