複数選択できるセレクトボックスの選択状態と値を取得する

JavaScriptで、複数選択できるセレクトボックスの選択状態を取得する場合は、 selected プロパティを使用します。値を取得する場合はvalueプロパティを使用します。

単一選択のセレクトボックスのように、 単純にvalueプロパティを参照しても取得できないので注意が必要です。

複数選択可能なセレクトボックスのサンプルコード

HTML

次のように、「multiple」を指定し、 複数選択できるセレクトボックスを用意します。


<form>
	<select id="idname" name="test" multiple>
		<option selected>text1</option>
		<option selected>text2</option>
		<option>text3</option>
	</select>
</form>

JavaScript

セレクトボックスの選択状態は、option要素のselectedプロパティを参照します (checkedプロパティではありません)。

値を取得する場合は、value プロパティを参照します。


var elem = document.getElementById('idname');

var opts = elem.options; // select要素のoptionプロパティ

console.log(opts);       // HTMLOptionsCollection(3)

for (var i = 0; i < opts.length; i++) {
	
	if (opts[i].selected) {
		console.log(opts[i].value);
	}
}

// 実行結果

HTMLOptionsCollection(3)
text1
text2

まず、getElementById()でselect要素を取得し、optionプロパティを参照します。

これによりHTMLOptionCollectionオブジェクトを取得できます。

あとはHTMLOptionCollectionオブジェクトをループで回して取得します。

optionプロパティを参照するところがポイントです。