2

背後のコードにを追加するボタンがありonclick、js関数に渡される一意のIDを渡します。IDは0で始まります。

それは機能していませんでした、そして結局私はそれが通過していた数、id、それが間違っていたことを理解しました...

つまり。これを参照してください:js fiddle

番号の最初と最後に'が付いています。なぜ013が11になるのか疑問に思っています。グーグルをして何も見つかりませんでした...

乾杯

ロビン

編集:

みんなありがとう。うん、今理解している。

この場合、先頭の0には意味があります。ここでは、メーリングリストの受信者IDで、013、つまり文字列の代わりに「013」を使用します。次に、jsの値を分割できます。これは、3つの値のそれぞれが、常に1文字の長さ、つまり0〜9の異なるIDを表すためです。

4

4 に答える 4

8

aで始まる数値リテラル0は、8進数として扱われます。つまり、基数8の13は基数10の11です...

8進数のリテラルは非推奨になりましたが、厳密モードでない場合でも機能します。

(質問はしませんでしたが)で始まる数値リテラル0xは16進数として扱われます。

MDNで詳細をご覧ください。

デモでは、パラメーターはと呼ばれます。これは、パラメーターidに対して数値演算を実行する必要がないことを意味します。その場合は、パラメーターを引用符で囲み、文字列として使用します。

先行ゼロを渡すことができる必要があるが、数値演算を実行するために数値を基数10として処理する必要がある場合は、それを引用符で囲んで文字列として渡し、文字列を次のように数値に変換できます。基数10を強制します。例:

something('013');

function something(id){    
    alert(+id);             // use unary plus operator to convert
    // OR
    alert(parseInt(id,10)); // use parseInt() to convert        
}

デモ: http: //jsfiddle.net/XYa6U/5/

于 2012-10-15T01:09:22.360 に答える
2

01310進数ではなく8進数で、10進数で11に等しい

于 2012-10-15T01:08:34.667 に答える
0

013で始まることに注意してください0。Javascriptでは、これにより数値は8進数と見なされます。一般に、10進数と16進数のシステムを使用することをお勧めします。ただし、この質問が示すように、8進数が役立つ場合があります。

これがお役に立てば幸いです。:)

于 2012-10-15T01:09:33.760 に答える
0

数値の最初の桁がゼロの場合、parseIntはその数値を8進数として解釈します。

次のように10の底を指定できます。

parseInt(numberString, 10)

次のような正規表現を使用して、このようなゼロを削除することもできます(結果は文字列になります)。

numberString.replace(/^0+/g, '');

于 2012-10-15T01:11:38.660 に答える