.toFixed()
は文字列を返します ( MDN のドキュメントgetPoints + addPoint
を参照) 。これが、加算ではなく文字列の連結を実行する理由です。
追加を実行した後、そのメソッドを呼び出します。
// unary + converts any numerical string to a number (no matter whether float
// or int)
var getPoints = +$('.awesome-points').text();
var newScore = getPoints + 1;
$('.awesome-points').text(newScore.toFixed(1));
またはより簡潔:
$('.awesome-points').text(function(i, val) {
return (+val + 1).toFixed(1);
});
仕組み:
に値を渡す代わりに.text()
、関数を渡すことができます。この関数は、選択した要素ごとに実行されます。関数に渡される最初の引数は、選択された要素のセット内の要素のインデックスであり、2 番目の引数は現在のテキスト コンテンツです。戻り値は新しいテキスト コンテンツとして設定されます。これは、 2 回
呼び出すことなく、テキスト コンテンツを読み書きするのに適した方法です。.text()
(+val + 1).toFixed(1)
は次のように評価されます。最初val
に、単項プラス ( +val
) によって数値に変換され、次に 1 増加されます ( + 1
)。.toFixed(1)
その操作の結果に対して呼び出されます。
+val
NaN
テキストを数値に正常に変換できない場合に返されます。これはあなたの場合には起こらないと思いますが、これは式で簡単に処理できます
return ((+val || 0) + 1).toFixed(1);
つまり、が( を含む) と+val
評価される場合、代わりに使用します。これは JavaScript の一般的なパターンです。What does "options = options || {}" mean in Javascript?も参照してください。.false
NaN
0