2

parseInt で 1 つの問題が発生しました。この parseInt をすべてのプロジェクトに適用しますが、今日はこれに遭遇しました。

通常のテキスト入力が<input type='text' name='KG'> あり、jquery を使用して入力値を取得し、別の入力に書き込みます <input type='text' name='KG2'>

以下は私のjqueryコードです

$(":input[name='KG']").keyup(calc);
function calc(){
   var kg = $(":input[name='KG']").val();
   kg=parseInt(kg);
   $(":input[name='KG2']").val(kg);
}

何を推測すると、この 結果 が 得 られ
ます 。






誰が何がうまくいかなかったのか知っていますか?Math.round を使用して解決できます。

4

3 に答える 3

5

028で始まり034、基数を指定していない09ため、8 進数として扱われます。とは無効な数字であるため、最初と最後は and になり、2 番目は decimal に変換されます。089203*8 + 4 = 28

使用するparseInt(kg,10);

于 2012-08-30T02:54:31.483 に答える
2

int を解釈するベースを指定する 2 番目のパラメーターを忘れました。例を修正するには、次のようにします。

$(":input[name='KG']").keyup(calc);
function calc(){
   var kg = $(":input[name='KG']").val();
   kg=parseInt(kg, 10);
   $(":input[name='KG2']").val(kg);
}
于 2012-08-30T02:53:55.497 に答える
2

コードを次のように変更します。

kg=parseInt(kg, 10);

基数 (2 番目の引数) を渡す必要がparseInt()あります。そうしないと、コンテンツに基づいて推測されます。「推測」ロジックはすべて、ここ MDN で説明されています。

あなたの場合、文字列がa では0なく a0xで始まる場合、文字列は 0-8 のみを有効な文字として尊重し、基数 8 に変換する 8 進数であると見なされます。

話の教訓 - 常に基数値を に渡しますparseInt()

于 2012-08-30T02:54:23.593 に答える