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()

+1

你在这里连接字符串转换变量(a和b)为整,你必须将输入值转换为数字 –

+0

Excellant !!!赖特答案。谢谢 – Sakthivel

+1

使用parseInt(),你应该总是设置基数的情况下:'parseInt(a.val(),10)' –

DEMO

$(document).ready(function() { 
    $("#submit").on("click", function() { 
     var a = +$("#a").val(); 
     var b = +$("#b").val(); 
     var sum = a + b; 
     alert(sum); 
    }) 
}) 

  • 错误1:试图检索事件调用之前的值,因此值一旦检索到的页面加载,当这两个文本框为空。

  • 错误2:您想sum但你只是连接两个stringsint首先进行除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);   
    }) 
    }) 
    
+0

也许数字不仅是整数。使用'+'会将它转换为数字 –

+0

得到你的第一点,他们也可以浮动,但我认为他得到了点,并使用正确的'解析'acc。满足他的要求。没有让你第二条语句“使用+将它转换为数字”,你能解释一下吗? – SajjadHashmi

+1

'var a = + $(“#a”)。val();''a'是一个数字(整数或浮点数无关紧要) –

海兰!

你做错了两两件事:

首先,你应该把放干将为“点击”功能。

$("#submit").on("click", function(){ 
     var a = $("#a").val(); 
     var b = $("#b").val(); 

谢胜利,所有的同时,jQuery的默认情况下得到的字符串从值,所以你应该parseInt()

而且Demo