2017-01-13 8 views
0

私は2つのボタンがあり、その間にはフォームがあります。一方のボタンは「+」と他方は「 - 」と表示します。インクリメント/デクリメントボタンを作ろうとしていますが、正しく機能していません。 追加が起こっていない問題を引き起こしているようですが、代わりに連結が起こっています。 「+」ボタンが押されたときにフォームの値が0であり、そしてOLDVALUEは再び01と増分である場合、例えば、それは0 01への私のJavaScriptコードがJavaScript/jQuery:私の増分が機能しないのはなぜですか?

//assume the oldValue read 0 from the form 
newValue = oldValue + 1 
alert(newValue); //this returns 01 instead of 1 

を有する変更するには、011を返します。これはなぜ増加しないのですが、最後に1を連結しますか? 驚くべきことに、デクリメントは同じコードで完璧に動作していますが、プラスの位置にマイナスがあります。

フォームの値を平和的に増やすにはどうすればよいですか?誰も "+ 1"がうまくいかない理由を説明できますか?

+2

のように、番号/ INT の場合は、キーワードNumberを使用して変換することができます '+'また、文字列連結のために使用されています。 'alert(typeof oldValue)'を指定すると、数値ではなく文字列として表示されます。 – PitaJ

+2

'oldValue'はStringです。それをNumberに変換します。 – Tushar

+0

感謝!フォームから読み込まれたデータが文字列であることが分かりませんでした。意味をなさない!ありがとう! –

答えて

1
newValue = Number(oldValue) + 1 

文字列をint型に変換するのを忘れたと思います。

+0

ありがとう!他の2人がコメントしたように、私は文字列の値を変換するのを忘れていました。私はフォームから読み込まれたデータが文字列形式であることを完全に忘れていました。 –

1

これを試してみてください。これが起こっている

newValue = parseInt(oldValue) + 1; 

OLDVALUEデータ型が文字列であり、あなたが文字列にのIntを追加するとき、出力も文字列であるため。だからあなたはそれにいくつかのint値を追加する前に数値に変換する必要があります。

+0

ありがとうございました!できます! –

1

CASE 1:

var a=1; 
var b=2; 

alert(a+b);// RESULT WILL BE 3 

CASE 2:

var a='1'; 
var b=2; 

alert(a+b);// RESULT WILL BE 12 

フォームか何かから値を取得している場合は、あなたの値は 文字列として扱われます( '1'のように)。あなたは以下の

alert(Number(a)+b); 
関連する問題