- ベストアンサー
変数の宣言?
以下のように変数の練習をしていたのですが、document.aaa.y.valueを右辺に持ってこないやり方っていうのはあるのでしょうか? また、ifの中身についてなのですが、一応これでも動くんですけど文法的にはどうなのでしょう?お願いします <html> <head> <title>変数の練習</title> <script language="JavaScript"> <!-- function test() { var x= document.aaa.y.value; document.aaa.y.value=x*1+1; if (document.aaa.y.value == "10") { document.aaa.y.value=0; } } //--> </script> </head> <body> <form name="aaa"> カウント:<input name = "y" value=0> <input type="button" value ="+1" onClick = "test()" > </form> </body> </html>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おはようございますtomo-naoさん、xruzです。 基本的にはleaz024さんの言われる通り問題はありません。 ただ厳密に言うと、 <input type="button" value ="+1" onClick = "test()" > でvalue値には文字列の+1が入っています。 従ってvar x= document.aaa.y.value; は var x=parseInt(document.aaa.y.value); と整数値変換します。 (この場合次の行で無理やりx*1というような数値変換は不要です。) if (document.aaa.y.value == "10") { では文字列比較をしていますので document.aaa.y.value=x*1+1; は document.aaa.y.value=(x*1+1).toString(); と文字列変換します。 まぁ、普通はこんなこと考える必要はないと思われますがスクリプトの 動きが「おかしいな」と思ったときには頭の片隅から引っ張り出してください。 がんばってくださいね(~:~i
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
> document.aaa.y.valueを右辺に持ってこないやり方 これって、どこのことを言っているのでしょうか? 右辺にせずに、変数 x に値をコピーしたいというのであれば、それは不可能です。 もし x を使わずに値を1増やしたいというのであれば、 document.aaa.y.value++; か、 ++document.aaa.y.value; でOKです。 > ifの中身について、文法的にはどうなのでしょう? 文法は問題ないですよ。 ただ、結構document.aaa.y.valueがあちこちにいるので、減らす工夫をした方が良いように思います。 折角、変数 x に値をコピーしたのだから、チェック等も x で行い、最終的に求まった値をdocument.aaa.y.valueに戻してやるとか。 function test() { var x = document.aaa.y.value; x++; if (x == 10) { x = 0; } document.aaa.y.value = x; } また、変数 x を使わない、こんな方法もあります。 function test() { if (++document.aaa.y.value == 10) { document.aaa.y.value = 0; } }
お礼
パソコンの調子が悪くてお礼が遅くなってしまい申し訳ありません!!丁寧に答えて下さってどうもありがとうございます☆ x = document.aaa.y.valueとdocument.aaa.y.value = xって意味的に違うんですね!!勉強になりました。ほんとにどうもありがとうございました
お礼
パソコンの調子が悪くてお礼が遅くなってしまい申し訳ありませんでした!!詳しく答えて下さって本当にありがとうございました★整数値変換とか文字列変換っていうのがあるんですね!知らなかった~便利ですねアレ。これから使ってみようかな(^_^)ありがとうございました。大変勉強になりました☆