【js】getElementsByClassName
概要はgetElementByIdの記事を参照してほしい。
書き方
getElementsByClassName('★★')、★★部分に取得したいHTMLのclassを入力する。
<!-- 取得 --> <p class="sumple">サンプルテキストA</p> <p class="sumple">サンプルテキストB</p> <p class="sumple test">サンプルテキストC</p> <input type="button" id="execute-btn" value="実行">
<script> $('#execute-btn').click(function(){ const TEXT = document.getElementsByClassName('sumple'); console.log(TEXT[0]); console.log(TEXT[1]); }); </script>
結果:取得情報
<p class="sumple">サンプルテキストA</p> <p class="sumple">サンプルテキストB</p>
【解説】
同じクラス名のHTMLを全て取得してくる。
ここからは例で覚えろ
複数class指定されているHTML要素を取得したいとき
<!-- 取得 --> <p class="sumple">サンプルテキストA</p> <p class="sumple">サンプルテキストB</p> <p class="sumple test">サンプルテキストC</p> <input type="button" id="execute-btn" value="実行">
<script> $('#execute-btn').click(function(){ const TEXT = document.getElementsByClassName('test sumple'); console.log(TEXT[0]); }); </script>
結果:取得情報
<p class="sumple test">サンプルテキストC</p>
同じようにそのまま複数classを()内に入れればOK。
結果見てわかるようにclassの順番は逆でもOKだが、完全一致のものだけ取得してくる。
(どちらか片方だけのHTMLは無視される)
document部分を変えると対象範囲を狭めれる
document. → ページ全体が対象
idの範囲指定. → idで囲われたソースコードが対象
そのため、
1. const 定数(変数) = getElementById()で対象範囲のHTMLを取得
2. document.getElementsByClass()の「document.」部分を 1. の要素を代入した変数を入れる
3. const 定数(変数).getElementsByClass()で完成。
<div id="content-1"> <p class="sumple">サンプルテキストA</p> <p class="sumple">サンプルテキストB</p> </div> <!-- content-2内のsumpleクラスがついたHTMLを取得したい --> <div id="content-2"> <p class="sumple">This is LemonA</p> <p class="sumple">This is LemonB</p> </div> <input type="button" id="execute-btn" value="実行">
<script> $('#execute-btn').click(function(){ const DIV = document.getElementById('content-2'); const TEXT = DIV.getElementsByClassName('sumple'); console.log(TEXT[0]); console.log(TEXT[1]); }); </script>
結果:取得情報
<p class="sumple">This is LemonA</p> <p class="sumple">This is LemonB</p>
おまけ
2つは似ているがsの有無に注意
getElementById
getElementsByClassName