14

アラート ボックスに 2 つの値を追加しようとしていますが、空白のアラート ボックスが表示され続けます。どうしてか分かりません。

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

7 に答える 7

50

文字列を追加すると、それらが連結されます。

> "1" + "1"
"11"

最初にそれらを数値に解析する必要があります。

/* parseFloat is used here. 
 * Because of it's not known that 
 * whether the number has fractional places.
 */

var a = parseFloat($('#a').val()),
    b = parseFloat($('#b').val());

また、クリック ハンドラー内から値を取得する必要があります。

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

それ以外の場合は、ページが読み込まれたときのテキスト ボックスの値を使用しています。

于 2013-04-29T00:02:11.140 に答える
5

jQueryで2つの数値を追加するには2つの方法があります

最初の方法:

var x = parseInt(a) + parseInt(b);
alert(x);

第二の方法:

var x = parseInt(a+2);
alert(x);

さあ、あなたの質問に来てください

var a = parseInt($("#a").val()); 
var b = parseInt($("#b").val());
alert(a+b);
于 2014-07-04T09:28:20.870 に答える
-2

わかりましたので、コードは実際に機能しますが、クリック関数の a と b をクリック前に使用した jquery 表記に置き換える必要があります。これにより、正確で最新の値が得られます。クリック機能をこれに変更するとうまくいくはずです:

$("submit").on("click", function(){
    var sum = $("#a").val().match(/\d+/) + $("#b").val().match(/\d+/);
    alert(sum);         
})

またはインライン化:

$("submit").on("click", function(){
    alert($("#a").val().match(/\d+/) + $("#b").val().match(/\d+/));         
})
于 2013-04-29T00:06:07.690 に答える
-2

このコードは機能します。あなたのコードと比較できますか?

<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>HTML Tutorial</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <meta charset="windows-1252">
<script>

$(document).ready(function(){
    var a = $("#a").val();
    var b = $("#b").val();   
    $("#submit").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="submit" type="button" value="press me">

</body>

</html>
于 2013-04-29T00:08:35.577 に答える