【JavaScript】checkedを持っているinput要素の親要素を取得する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、JavaScriptでcheckedを持っているinput要素の親要素を取得する方法をご紹介しています。
checkedを持っているinput要素の親や祖先要素を取得したいんだけど、良い方法ないかな?
上記の疑問にお答えします。
では、解説していきます。input要素がcheckedを持っているか判定する
input
要素がchecked
を持っているかは、checked
プロパティの値で取得することができます。checked
プロパティは、対象の要素がchecked
を持っている場合はtrue
を、持っていない場合はfalse
を返します。
HTML
<label><input type="checkbox" name="checkbox[]" value="1" checked>Item1</label>
JavaScript
const input = document.querySelector('input') if(input.checked === true){ console.log(input.value) }
上記を実行すると、コンソールにinput
要素のvalue
が出力されます。対象の要素のchecked
プロパティを取得することで、input
要素がchecked
を持っているか判定することができます。
親要素を取得する
JavaScriptで親要素を取得する方法はいくつかありますが、ここでは私がよく使用する2つの方法をご紹介したいと思います。
parentElement
parentElement
は、ノード上の親要素を返すプロパティです。
HTML
<label><input type="checkbox" name="checkbox[]" value="1" checked>Item1</label>
JavaScript
const input = document.querySelector('input') console.log(input.parentElement)
上記を実行すると、実行結果には下記の内容が出力されます。
実行結果
<label>...</label>
以上がparentElement
による親要素の取得方法です。メソッドチェーンでparentElement
をつなげることで親要素より上にある要素を取得することができますが、ソースがゴチャっとしますので、もし親要素より上の要素を取得する必要もしくは将来的に可能性がある場合はclosest()
を使用します。
closest()
closest()
は、対象の要素からルート要素に向かって、引数に指定された文字列の要素が見つかるまで探索するメソッドです。ポリフィルがあるため、IEでも動作させることができるようです。
HTML
<div id="app"> <ul> <li> <label><input type="checkbox" name="checkbox[]" value="1">Item1</label> </li> </ul> </div>
JavaScript
const input = document.querySelector('input') console.log(input.closest('#app'))
上記を実行すると、実行結果には下記の内容が出力されます。
実行結果
<div id="app">...</div>
ポリフィルは下記のページで提供されています。使用される場合は、ポリフィル関連のスクリプトを一つのファイルにまとめておいて読み込むとすっきりするのでおすすめです。
checkedを持っているinput要素の親要素を取得する
本題のchecked
を持っているinput
要素の親要素の取得についてご紹介します。前項までにご紹介した内容ですので、ソースだけご紹介させていただきます。value
に3
を持つチェックボックスにchecked
を持たせています。
HTML
<div id="app"> <ul> <li><label><input type="checkbox" name="checkbox[]" value="1">Item1</label></li> <li><label><input type="checkbox" name="checkbox[]" value="2">Item2</label></li> <li><label><input type="checkbox" name="checkbox[]" value="3" checked>Item3</label></li> <li><label><input type="checkbox" name="checkbox[]" value="4">Item4</label></li> <li><label><input type="checkbox" name="checkbox[]" value="5">Item5</label></li> </ul> </div>
JavaScript
const inputs = document.querySelectorAll('input') Array.from(inputs).forEach((input)=>{ if(input.checked === true){ console.log(input.parentElement) } })
実行すると、コンソールに下記のログが出力されます。checked
を持っているチェックボックスの親要素を取得することができていますね。
実行結果
<label> <input type="checkbox" name="checkbox[]" value="3" checked> Item3 </label>
上記はparentElement
の例ですので、closest()
で要素を取得する場合は、parentElement
の部分を置き換えてご使用ください。
最後に
checked
を持っている要素を取得して何らかの処理を実行する例として、開閉するアコーディオンメニューなどがありますね。読み込み時に子要素がchecked
を持っていれば開いた状態にするといったイメージです。その他の部分でも応用できると思いますので、本記事が制作のお役に立てば幸いです。
以上、JavaScriptでcheckedを持っているinputの親要素を取得する方法のご紹介でした!
JavaScriptを基礎からしっかりと学びたい方へ
下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。