1

このデモ Fiddleを確認してください。

私がやろうとしているのは、結果に先頭の「$」を追加することです。ラベル「in Retained Aid」は正常に機能しますが、「$」を追加すると、現在の合計を表示する代わりに数字を出力に追加するだけです。

したがって、2000 + 4000 + 5000を追加すると、「 $200040005000 in Retained Aid 」と表示されます(ドル記号が付いていますが、実際には数字が加算されません)。

var updateTotal = function () {
  var input1 = parseInt($('#earnedAid1').val() || 0);
  var input2 = parseInt($('#earnedAid2').val() || 0);
  var input3 = parseInt($('#earnedAid3').val() || 0);        
  $('#total').text("$" + input1 + input2 + input3 +" in Retained Aid");
};

編集:それに加えて、入力ボックスに「2」を入力するだけで、出力に $200 と表示されます。

4

3 に答える 3

3

Javascript は、+演算子を使用して文字列を連結し、数値を追加します。式に数値しかない場合はそれらを追加しますが、式に文字列があるとすぐに、それらすべてを文字列として扱います。これは、あなたが見ているものを説明しています。

それで、それを解決する方法は?

簡単: まず、値とが数値input1であることを確認してから、文字列部分とは別の式でそれらを合計します。input2input3

('Not A Number') 結果のparseInt()有効性チェックを追加する必要がありますが、コードでこれの最初の部分を既に実行しています。そうしないと、出力にテキストが表示されます。NaNNaN

2 番目の部分は、数値を一連の括弧で囲んで、別の式として扱われるようにする単純なケースです。

$('#total').text("$" + (input1 + input2 + input3) +" in Retained Aid");
于 2013-10-29T13:32:54.787 に答える
1

+は、JS のテキスト連結の演算子でもあります。したがって、テキスト値から始めてそれに何かを「追加」すると、次の値もテキストに変換されます。数学的な追加は行われないため、そこからはすべて文字列連結だけです。

しかし、括弧を使用して式のどの部分を最初に実行する必要があるかをグループ化することで、簡単に修正できます。

$('#total').text("$"+(input1 + input2 + input3) +" in Retained Aid");

http://jsfiddle.net/WuMpz/9/

于 2013-10-29T13:32:59.293 に答える