即使一切都是正确的,jquery结果也不会出现

时间:2013-11-25 10:35:30

标签: jquery

下面的代码没有给出任何预期的输出。我尝试了很多时间来获得确切的输出,但没有用。请让我知道为什么会发生这种情况以及我犯了什么错误。

<!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>

4 个答案:

答案 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,以便先通过parseint添加到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)

DEMO

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

Demo