0

バインド時に2つの入力フィールドを要約しようとしています。

これは私の機能です:

$j('#calclength, #calcwidth').keyup(function() {
    var s1 = $j('#calclength').val();
    var s2 = $j('#calcwidth').val();
    var s3 = (s1) + (s2);
        $j('.s1').text(s3);
});

一方、#calclength、#calcwidthは私の入力であり、.s1は結果のあるスパンです。

現時点では、たとえば1と2を入力に挿入すると、結果は3ではなく12になります。

ここで私が間違っていることを教えてもらえますか?

よろしくお願いします。ドム

4

4 に答える 4

6

文字列を数値に変換する単項+演算子を使用する

$j('#calclength, #calcwidth').keyup(function() {
    var s1 = $j('#calclength').val();
    var s2 = $j('#calcwidth').val();
    var s3 = (+s1) + (+s2);
    $j('.s1').text(s3);
});

フィドル

于 2012-07-27T13:25:15.473 に答える
3

値を整数に変換する必要があります。たとえば、次のようになりますparseInt()

var s1 = parseInt($j('#calclength').val(), 10);
var s2 = parseInt($j('#calcwidth').val(), 10);

2番目の引数は、数値が常に8進数(先頭)や16進数(先頭)ではなく10進数として扱われるようにするための基数を設定します。1000x


代わりに、 :parseInt()を前に付けることで、数値への暗黙の変換を使用することもできます。+

var s1 = +$j('#calclength').val();
var s2 = +$j('#calcwidth').val();

どちらの解決策があなたに適しているかは、数字の後にガベージが続く文字列に対してどのような動作が必要かによって異なります。動作の違いについては、次の例を参照してください。

js> +'123x'
NaN
js> parseInt('123x', 10)
123
于 2012-07-27T13:23:59.207 に答える
2

それらを整数に変換する必要があります。そうでない場合、それらは文字列であり、連結され、合計されません。

$j('#calclength, #calcwidth').keyup(function() {
    var s1 = $j('#calclength').val();
    var s2 = $j('#calcwidth').val();
    var s3 = (+s1) + (+s2);
        $j('.s1').text(s3);
});
于 2012-07-27T13:25:50.470 に答える
2

値は文字列として読み取られているため、合計ではなく連結されています。それらを整数に強制します:

var s1 = parseInt($j('#calclength').val());
var s2 = parseInt($j('#calcwidth').val());
于 2012-07-27T13:22:55.120 に答える