• ベストアンサー

FORMデータを配列としてそうしんしたいのですが・・・

JavaScriptでセレクトボックス内の値が変化したらもう一つあるセレクトリスト内の値が変更されるように組みました。 以下コード。 ----------------------- <HTML> <head> <script type="text/JavaScript"> <!-- menuItem = [["A","B","C","D","E"],       ["1","2","3"], ["あ","い","う","え","お","か"]]; function setMenuItem(n) { len = document.myForm.works.options.length; for (i=len-1; i>=0; i--) { document.myForm.works.options[i] = null; } for(i=0; i<menuItem[n].length; i++) { document.myForm.works.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } } } //--> </script> </head> <body> <FORM name = "myForm"> <SELECT name="list" onChange="setMenuItem(this.selectedIndex)"> <option value="list1">リスト1 <option value="list2">リスト2 <option value="list3">リスト3 </SELECT> <SELECT name="works[]" MULTIPLE> <OPTION>A <OPTION>B <OPTION>C <OPTION>D <OPTION>E </SELECT> </FORM> </BODY> </HTML> ----------------------- でセレクトリスト内のデータを配列として送信したいのですがうまくいきません。 セレクトリストのnameはworks[]にしたら動作すらしなくなりました。 どなたかご教授願います。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

とりあえず ×document.myForm.elements.works ○document.myForm.elements["works[]"] #1さんの指摘のうち、配列に関する部分に関しては 的を得ていないようです。 受け取った側で処理が楽になるように配列っぽい名前に するのはこの場合は有効です。

kzz0295
質問者

お礼

回答ありがとうございます! 構文が異なっているとのことですか。 一応やりたいこととしてはセレクトボックスである値を選択したらそれに応じてセレクトリストのデータ表示され、それを配列として送信するということを行おうとしてました・・・・

その他の回答 (2)

回答No.3

#2さんにご指摘を受けたので追記しておきます。 HTML4.0では、name属性に[]の使用は認められていません。 認められている文字は、アルファベット、数字、ハイフン(-)、ピリオド(.)、コロン(:)、アンダースコア(_)のみです。 動作するのは、IEが拡大解釈してくれているからです。 他のブラウザで動くという保証はありませんし、今後のバージョンのIEで動くという保証もありません。 ですので、この場合は、 work[]→work としたほうが良いでしょう。

回答No.1

HTMLのname属性は、そのタグで囲まれた部分に名前をつけるためのものですので、配列を意味する名前はつけることができません。  ※work[]→work また、括弧の数が一つ多いです。 {}の中はインデントするなどして、見やすくすると、括弧の数の間違えは少なくなりますよ。

kzz0295
質問者

お礼

ありがとうございます! 括弧に関してはこちらの編集ミスでした・・・・ >>HTMLのname属性は、そのタグで囲まれた部分に名前をつけるためのものですので、配列を意味する名前はつけることができません。  ※work[]→work なるほど・・・さまざまな参考書をみてみると セレクトリストのデータを配列として送信する場合[]をつけていたのでそのまま鵜呑みにしていましたので・・・

関連するQ&A