40

ページに次の JS が埋め込まれています。

var round = Math.round;
var id = $(this).attr("id");

var len = id.length;
var indexPos = len -1; // index of the number so that we can split this up and used it as a title

var pasType = id.substring(0, indexPos); // adult, child or infant
var ind = round(id.substring(indexPos)); // converts the string index to an integer
var number = (id.substring(indexPos) + 1); // creates the number that will go in the title
window.alert(number);

idadult0 のようなものになります。その文字列を取得して、adult と 0 に分割する必要があります。この部分は正常に機能します。

0 をインクリメントしようとすると問題が発生します。ご覧のとおり、Math.round を使用して整数に変換し、それに 1 を追加します。この後、0 は 1 になると予想しています。01ただし、 ではなくを取得するため、整数に変換していないようです1。これを adult1 でテストすると、アラートは11.

私は参照用にこの質問を使用しておりvar number += id.substring(indexPos);、JS を壊す も試しました ( unexpected identifier '+=')

私が間違っていることを誰かが知っていますか?これを行うより良い方法はありますか?

4

7 に答える 7

9

JS は 0 が文字列であると考えますが、実際にはこれを int に変換するには、次のように parseInt() 関数を使用します。

var numberAsInt = parseInt(number, 10);  
// Second arg is radix, 10 is decimal.

数値を int に変換できない場合は NaN が返されるため、本番環境で使用されるコードで、または少なくとも入力が 100% 確実でない場合は、それも確認することをお勧めします。

于 2013-09-10T08:04:46.447 に答える
6

変換Number Class:-

例えば:

var n = Number("103");
console.log(n+1)

出力: 104

注: - Numberはクラスです。文字列を渡すと、のコンストラクターがNumber classそれを変換します。

于 2018-01-29T06:52:44.193 に答える
3

parseInt() を使用します。

var number = (parseInt(id.substring(indexPos)) + 1);` // creates the number that will go in the title
于 2013-09-10T08:05:53.123 に答える