• ベストアンサー

JSPでボタンを押したら、文字が出るようにしたい。

<%int i=0;%> <form> <input type="submit" value="私物回収" onClick=<%i=i+9;%>> </form> <%if(i>=10){%> <p>18になったよ。</p> <%}else{%> <p>9になったよ</p> <%}%> ソースはこんな感じに書いております。 1回クリックしたら、(9になったよ)って出て、2回クリックしたら(18になったよ)って出るようにしたいです。 今の状態だと、ボタンを押してないのに(9になったよ)って出てしまいます。 これをボタン押す前は何も出さず。押してから出るようにしたいです。 回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

<input type="submit">を使っていますよね。ということは、クリックしたら送信して、そのアドレス(おそらくこの状態では現在のページ)がリロードされます。 つまり、リロードされる段階で変数iなどはすべてまた初期状態に戻りますから、何度ボタンを押しても結果はかわりません。常に、ボタンをおす度に最初の<%int i=0;%>でiはゼロになり、その後の<%i=i+9;%>で9になって、それがそのまま結果につながります。 考え方としては2つあります。 1つは、JSPがどうとか考えず、すべてJavaScriptとして記述する、という考え方です。 もう1つは、値を<input type="hidden">などに保管しておき、送信したらその値をgetParameterで取り出して、その値を元に変数iを設定するようにする、というものです。あるいは、セッションなどに値を保管してもいいでしょう。 これは、フォームの送信やセッションについて理解していないといけません。そのあたりはすでにわかっていますか? わかっていなければ、そのあたりまで学習を進めて下さい。

nomnom20
質問者

補足

フォームの送信はHTMLをやっていたので、なんとなくわかってたのですが、 セッションスコープは中途半端に理解しただけで、実際にやってみても全然できませんでした。 JSPやサーブレットじゃなく、JAVAから勉強しなおそうと思います。 HTML&CSSで本をちょっと見ただけで、僕でもHP作れたことで調子にのってしまい、 JAVAも楽勝だろ~~いっちょゲーム作ってみっか~と思い手出してしまったら全然わかりませんでした。 ジャバスクリプトは今のところ考えていません。JAVAより難しそうですし・・・ JAVAに手出しつつ、違うのに手を出すと悪い頭が回らなくなってしまいます。 質問しておいて理解しないままあきらめるのは失礼ですが、 私は質問する前に、そもそもスキルが追いついてなく、JSP&サーブレットは予想以上に難しかったです。 回答してくださり、ありがとうございました。

関連するQ&A