プロが教える店舗&オフィスのセキュリティ対策術

<%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になったよ)って出てしまいます。
これをボタン押す前は何も出さず。押してから出るようにしたいです。
回答お願いします。

A 回答 (1件)

<input type="submit">を使っていますよね。

ということは、クリックしたら送信して、そのアドレス(おそらくこの状態では現在のページ)がリロードされます。

つまり、リロードされる段階で変数iなどはすべてまた初期状態に戻りますから、何度ボタンを押しても結果はかわりません。常に、ボタンをおす度に最初の<%int i=0;%>でiはゼロになり、その後の<%i=i+9;%>で9になって、それがそのまま結果につながります。

考え方としては2つあります。

1つは、JSPがどうとか考えず、すべてJavaScriptとして記述する、という考え方です。

もう1つは、値を<input type="hidden">などに保管しておき、送信したらその値をgetParameterで取り出して、その値を元に変数iを設定するようにする、というものです。あるいは、セッションなどに値を保管してもいいでしょう。

これは、フォームの送信やセッションについて理解していないといけません。そのあたりはすでにわかっていますか? わかっていなければ、そのあたりまで学習を進めて下さい。

この回答への補足

フォームの送信はHTMLをやっていたので、なんとなくわかってたのですが、
セッションスコープは中途半端に理解しただけで、実際にやってみても全然できませんでした。
JSPやサーブレットじゃなく、JAVAから勉強しなおそうと思います。

HTML&CSSで本をちょっと見ただけで、僕でもHP作れたことで調子にのってしまい、
JAVAも楽勝だろ~~いっちょゲーム作ってみっか~と思い手出してしまったら全然わかりませんでした。

ジャバスクリプトは今のところ考えていません。JAVAより難しそうですし・・・
JAVAに手出しつつ、違うのに手を出すと悪い頭が回らなくなってしまいます。

質問しておいて理解しないままあきらめるのは失礼ですが、
私は質問する前に、そもそもスキルが追いついてなく、JSP&サーブレットは予想以上に難しかったです。
回答してくださり、ありがとうございました。

補足日時:2014/08/15 02:54
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!