- ベストアンサー
JSP内での配列の値取得方法。
こんにちは。 -------- (略) <SCRIPT LANGUAGE="JavaScript" > function NextPage(no){ with( document.frm1 ) { hidNO.value = no; hidPlanId.value = 「ここに配列から取得した値を表示したい」; action = "Next.jsp"; submit(); } (略) <FORM name="frm1"> <% for(int i=0; i<(DBより取得した配列).length; i++) { ROW(HashMap継承の配列クラス) row = rows[i]; %> <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(1)%>" > <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(2)%>" > <TD><INPUT TYPE="button" NAME="btnDet<%= i %>" VALUE="詳細表示" onClick="NextPage('<%= i %>');" > </TD> <% } %> </FORM> ******* 上記のhidkeyのvalue値をJavaScript内でi番目の値を 取得するにはどのように記載したらよいのでしょうか・・・。 他のクラス等を使っているため、うまくコードが表現 できていないかもしれませんが、 もしこれでわかった方、ぜひ教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
formごと配列にするといいんじゃないでしょうか。 <% for(int i=0; i<(DBより取得した配列).length; i++) { ROW(HashMap継承の配列クラス) row = rows[i]; %> <form name="frm"> <INPUT TYPE="hidden" NAME="hidKey" VALUE="<%= i番目の値(1)%>" > <INPUT TYPE="hidden" NAME="hidKey" VALUE="<%= i番目の値(2)%>" > <INPUT TYPE="button" NAME="btnDet<%= i %>" VALUE="詳細表示" onClick="NextPage('<%= i %>');" > </form> <% } %> DOMとしてはdocument.frmが配列の要素数分確保されます。 javascript側は、 <script type="text/javascript"> function NextPage(no){ var key1; var key2; with(document.frm[no]){ // 配列参照できる key1 = hidKey[0].value; // form中の要素も同名の要素なら配列で参照できる key2 = hidKey[1].value; } alert("key1 = " + key1 + ", key2 = " + key2); // 確認 } </script> というように配列で参照できます。 あと、idとnameは名前空間を共有しているので、idとnameで名前文字列が重複してはいけません。
その他の回答 (1)
- kscKane
- ベストアンサー率62% (18/29)
現状では一部HTMLタグのIDがIDとして機能していません。 IDはページ内で同一の物がない状態が正常です。 <INPUT TYPE="hidden" ID="hidKey<%= i %>_1" NAME="hidKey" VALUE="<%= i番目の値(1)%>" > <INPUT TYPE="hidden" ID="hidKey<%= i %>_2" NAME="hidKey" VALUE="<%= i番目の値(2)%>" > とでもすれば、 document.getElementById("hideKey2_1").value; のような形で値がとれるのではないでしょうか。 "hideKey2_1"の部分は、取りたい物が配列何番目の値か?(1)か(2)か?によって適宜変更してください。 NextPage()の引数である no と言う変数を使うならば、 document.getElementById("hideKey" + i + "_1").value; なんて書き方でどうにかなりそうです。
お礼
アドバイスありがとうございます! 実際のものをそのままのせられないので、 コピペして変数名等変更した際の漏れでした・・・。 読みにくくて申し訳有りません。
お礼
アドバイスありがとうございました! 説明が不足しすぎていましたが、 実際には、<INPUT>要素をテーブルのi行目の情報として保有しており、 FORMをわけてしまうとひとつのテーブルでは なくなってしまいます・・・。 bgbgさんのアドバイス通り、 hiddn要素のみ別FORM(仮にfrm2)で用意して JavaScript部分でfrm1から取得した配列Noで、frm2[no]の内容を 取得すれば、 同じループが別々に 出来てしまって少々美しくない気はしますが なんとかなりそうな気がします!