• ベストアンサー

複数選択のリストボックスのvalueを表示

現在下記のようにしてリストボックスの値をフォームボタンに表示しています。複数選択のリストボックスに変更した場合の書き方のアドバイスをいただきたいのですが。 function Select( parts ){ var i,Msg; for (i = 0; i < parts.options.length; i++){ if ( parts.options[i].selected ){ Msg = parts.options[i].value + "さん宛送信"; } } document.main.Submit.value = Msg }

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

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

複数選択されたときにどのように表示させたいのかが不明なので、お答えしづらいのですが、単純に選択した項目の値を並べて良いのであれば、例えば以下のサンプルを考えられます。 function Select( parts ){ var i,Msg; Msg = "" ; for (i = 0; i < parts.options.length; i++){ if ( parts.options[i].selected ) { Msg += parts.options[i].value + "さん、" ; } } Msg += "宛に送信"; document.main.Submit.value = Msg ; } ここでのポイントは、for文の手前で、Msgを空文字列で確実に初期化すること、と、複合代入演算子+=を使うことです。 「+=」は、「A += B」と「 A = A + B」の略記と思ってください。すなわち、変数Aにすでに格納されている文字列の後ろにBが連結された値がAに格納される訳です。ただし、「A+=」が実行される段階でAの値が不定の場合、その挙動は不明ので、「A+=」(があるfor文)の手前で初期化を行っておきます。 ただ、これでは、たくさん選択するとSubmitボタンが横に大きくなってしまいますし、かといって、改行を挟んで連結させたところでボタン上の文字を複数行になるとは思えませんし。。。 中途半端な回答ですみません。

s-holmes
質問者

お礼

回答ありがとうございました。解説していただいた内容は初心者にとってはわからない部分もあるのですが、やりたい内容はこれでまったくOKでした。複数と言っても最大でも3人ほどの想定のフォームですので、これで使用させていただきます。 #複合代入演算子というのを新たに学びました。

すると、全ての回答が全文表示されます。

関連するQ&A