文字列を返す値にjavascript(jquery)を使用して整数値を追加するにはどうすればよいですか?


91

私は次のような単純なhtmlブロックを持っています:

<span id="replies">8</span>

jqueryを使用して、値(1)に1を追加しようとしています。

var currentValue = $("#replies").text();
var newValue = currentValue + 1;
$("replies").text(newValue);

何が起こっているのですか?

81

その後

811

9ではなく、これが正解です。何が悪いのですか?

回答:


186

parseInt()はそれを整数型にするか、変換を実行できない場合はNaN(数値ではない)にします。

var currentValue = parseInt($("#replies").text(),10);

2番目のパラメーター(基数)は、10進数として解析されることを確認します。


10
parseInt()に注意してください。「010」は9として認識されます(ゼロで始まる値は8進数として解析されます)。
MightyE 2010

3
Bleh、 "010"は8(8ではなく)として解析
MightyE

7
@Jacob Relkin:これは便利だったので、もう1つ+1しました。あなたがより良い答えを知っているなら、それはあなたがそれを共有しなかったのは残念です。
ANevesはSEは悪であると考えています

1
先行ゼロが検出されない限り、8進数になります。ユーザー入力を受け入れるときの単純な不具合。
Diodeus-James MacFarlane

1
2番目のパラメーターを使用して基数を指定している限り、正常に機能します。10を parseInt("010", 10)返します。
jahroy 2012

29

Parse intは、ここで使用する必要があるツールですが、他のツールと同様に、正しく使用する必要があります。parseIntを使用するときは、常に基数パラメーターを使用して、正しいベースが使用されるようにする必要があります

var currentValue = parseInt($("#replies").text(),10);

27

整数は文字列に変換されるのではなく、文字列に変換されます。あなたが欲しい:

var newValue = parseInt(currentValue) + 1

12

parseIntは、IEでは機能しませんでした。したがって、整数として必要な変数に+を使用しました。

var currentValue = $("#replies").text();
var newValue = +currentValue + 1;
$("replies").text(newValue);

4

.jsの8進数の誤解に関して-私はこれを使用しました...

parseInt(parseFloat(nv))

先行ゼロでテストした後、正しい表現で毎回戻ってきました。

お役に立てれば。


2

コードは次のようになります。

<span id="replies">8</span>

var currentValue = $("#replies").text();
var newValue = parseInt(parseFloat(currentValue)) + 1;
$("replies").text(newValue);

ハックNトリック


1

1つずつ増やすには、次のようなことができます

  var newValue = currentValue ++;

8
確かに++ currentValue?
Marcin

1
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

月の問題を修正しました。getMonth配列は0から11までです。


1

変数に1を掛けて、JavaScriptに変数を数値に変換させ、それを他の値に追加することができます。これは、乗算が加算のようにオーバーロードされないため機能します。これはparseIntよりも明確ではないと言う人もいるかもしれませんが、それはそれを行う方法であり、まだ言及されていません。


0

単に、テキスト値の前にプラス記号を追加します

var newValue = +currentValue + 1;

-1

JavaScriptでparseInt()メソッドを使用して文字列を整数に変換できます

あなたはこのようにコードを変更するだけです

$("replies").text(parseInt($("replies").text(),10) + 1);

これは上記の投稿された回答(約10年前に投稿されたもの)とどう違うのですか?
Code Maniac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.