• ベストアンサー

リストボックスに追加した全ての値を取得したいのですが・・・

No.172288で質問したものですが まだJavaScriptを勉強しはじめたばかりでまた壁にぶつかってしまいました。 Bのリストボックスの値をAに追加して他のページにPOSTで送りたいのですが Aに追加された値をすべて送りたいのです。 それで、まずすべての値をとれるかどうかを確認するためにSubmitボタンを押して すべてを表示させるものを作ってみたのですが、どうしても 一番目(つまりiが0のAAAAA)しか表示できません。 エラーも出ないのでどこが間違っているのかがわからないのですが どこが間違っているのでしょうか。 何度もすみませんがよろしくおねがいします。 <html> <head> <title></title> </head> <script type="text/JavaScript"> <!-- function addItem() { A = document.X.A; B = document.X.B; for(var i=0;i<B.options.length;i++) if(B.options[i].selected) A[A.options.length] = new Option(B.options[i].text, B.options[i].value); } function func(){ for(var w=0;w<A.options.length;w++) document.write(A.options[w].text); } // --> </script> <body> <form name="X"> <select size="5" multiple name="A"> </select> <input type="button" value="Copy" onClick="addItem()"> <select size="5" multiple name="B"> <option>AAAAA</option> <option>BBBBB</option> <option>CCCCC</option> </select> </form> <form name="Y"> <input type="button" value="Submit" onClick="func()"> </form> </body> </html>

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

  • ベストアンサー
  • annie_x
  • ベストアンサー率50% (65/129)
回答No.1

最初のループで document.write した時に変数の値がクリアされてしまってるようなので、先に送る文字列を作成してしまってから次の処理に移ってはいかがでしょうか。 //sample: function func(){ str=""; for(var w=0;w<A.options.length;w++) { str = str +"(区切り文字)"+ A.options[w].text; } document.write(str); } ただしこれは上記サンプルを動かすだけのためなので、 「POSTで送りたい~」という処理の助けになるかどうかはわかりません。

aki_o
質問者

お礼

ありがとうございました。 結局配列にいれてしまったほうが早かったので そっちにしてしまいましたが 大変勉強になりました。 (求める処理も完成いたしました。皆さまありがとうございました。)

その他の回答 (1)

  • xruz
  • ベストアンサー率50% (72/143)
回答No.2

おはようございますaki_oさん、xruzです。 1.submitで送付されるデータは、通常submitが含まれるformデータです。 2.postで送付されるデータはtext値でなくvalue値です。 3.サーバ側のプログラムないしはスクリプトはmultivalue(複数値)を取得できる記述になっていますか。 以上の3点をもう一度確認してくださいね。

aki_o
質問者

お礼

つくりたかったものは完成いたしました。 いろいろご教授ありがとうごさいました。 たいへん勉強になりました。

関連するQ&A