速報

FortiWebがPHP2Shell署名を公開|Alert Onlyから遮断へ切り替える手順

CATEGORY

【JavaScript】セレクトボックスのoptionをforEachでループする

※本ページのリンクにはプロモーションが含まれています。

【JavaScript】セレクトボックスのoptionをforEachでループする

目次

本記事では、JavaScriptでセレクトボックスのoptionをforEachでループする方法をご紹介しています。

selectのoptionの数だけループする処理を作るにはどうすればいいんだろう?

上記の疑問にお答えします。

では、解説していきます。

スポンサーリンク

selectのoptionをforEachでループする

select要素からoption要素を取得して、option要素の数だけループする処理を作成します。

select要素からoption要素を取得するにはoptionsプロパティを使用します。optionsプロパティはHTMLCollectionを返すため、配列への変換が併せて必要になります。

下記にサンプルソースを用意しています。JavaScriptの処理についてはコメントをご参照いただければ幸いです。

HTML

<div id="app">
    <select id="list" name="list">
        <option value="vuejs" selected>Vue.js</option>
        <option value="react">React</option>
        <option value="angular" disabled>Angular</option>
    </select>
</div>

JavaScript

//select要素をidで取得
const list = document.getElementById('list')
//select要素のoption要素を取得
const options = list.options

//HTMLCollectionを配列に変換してループ
Array.from(options).forEach(function(option) {
    //option要素のラベル(テキスト)
    console.log('Label:' + option.label) //or option.text
    //option要素の値
    console.log('Value:' + option.value)
    //option要素の選択状態
    console.log('Selected:' + option.selected)
    //option要素の選択状態
    console.log('Disabled:' + option.disabled)
});

実行すると下記の結果を得ることができます。(見やすいように一部改行を入れています。)

実行結果

"Label:Vue.js"
"Value:vuejs"
"Selected:true"
"Disabled:false"

"Label:React"
"Value:react"
"Selected:false"
"Disabled:false"

"Label:Angular"
"Value:angular"
"Selected:false"
"Disabled:true"

以上でselectのoptionをforEachでループすることができます。

HTMLCollection→配列の変換について

optionsプロパティは指定した要素のHTMLCollectionを返します。 HTMLCollectionはそのままではループに向かないため、一度配列に変換してあげる必要があります。

HTMLCollection

HTMLOptionsCollection(3) 
0: option
1: option
2: option
length: 3
selectedIndex: 0

Array

object Array(3)
[
 <option value="vuejs" selected="">Vue.js</option>,
 <option value="react">React</option>,
 <option value="angular" disabled="">Angular</option>
]

スプレッド構文でも配列に変換可

前項でご紹介したサンプルソースでは配列への変換にArray.from()を使用していますが、スプレッド構文でバラバラにして配列にする方法もあります。

const list = document.getElementById('list')
const options = [...list.options]

options.forEach(option => {
    console.log('Label:' + option.label)
    console.log('Value:' + option.value)
    console.log('Selected:' + option.selected)
    console.log('Disabled:' + option.disabled)
});

注意点として、スプレッド構文はES6~の使用できるため、IEでは動作しません。その点ご注意いただければと思います。

スポンサーリンク

最後に

select要素を取得してoptionをループする処理は、optionの選択によって処理を分岐したり、選択された値によってページ遷移したりと使用することが多い処理になります。ざっと内容を覚えてもらって制作に活かしていただければ幸いです。

以上、JavaScriptでセレクトボックスのoptionをforEachでループする方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、これまでに100以上のWordPressサイトの構築・保守を担当してきました。Webサイト制作に加え、アプリ開発やAIを活用した開発にも取り組み、近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
WordPress / PHP / JavaScript / アプリ開発 / Webサイトの運用・セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

スポンサーリンク

関連する記事

おすすめの書籍

キーワードから探す