広告

getElementsByTagName() 要素取得方法と2つの注意点

タグの要素名からタグ情報を取得したいときに使うのがgetElementsByTagNameです。構文を使って見る前に注意事項や代替方法をしっかり理解するのが重要です。今回はgetElementsByTagNameの要素取得方法や注意点2つを説明します。

getElementsByTagNameの要素取得方法

構文

上記はelementsの変数に、getElementsByTagNameで取得した要素を格納しています。

nameに取得(検索)したい要素を指定します。例えばh1タグを検索する場合はこうなります。

特定の子要素の中でgetElementsByTagNameを指定したい場合

HTML文書のタグを全部取得するなら、そのままgetElementsByTagNameでいいかと思いますが、特定の子要素内のタグを検索したい場合は、特定の子要素を指定してからgetElementsByTagNameを指定すると良いでしょう。

以下は、specialのclass IDを持つ特定の子要素を指定した後に、<p>タグの要素をgetElementsByTagNameで取得しているコードです。

上記は「<p>これは取得したくない</p>」を避けて、specialの子要素内の<p>タグを取得しています。

getSelectorAllでも似たように要素を取得できる

タグの要素名の取得は他のメソッドでも可能です。例えばgetSelectorAllは、似たように複数の要素名を取得することが可能です。

以下はページ内の全てのh1タグを取得する構文です。

getSelectorAllの注意点

getSelectorAllでは、classを取得する場合は(.ドット),IDを取得する場合は(#)を前につけるなどルールは異なりますので、事前に確認しておきましょう。

getElementsByTagNameの注意点

変更した要素は更新される

getElementsByTagNameはHTMLコレクションである(生きているともいう)ので、元のDOMが変更された場合、取得する要素は変更されます。(更新されたら自動で同期される)

例えば、getElementsByTagNameで、要素をjavascriptで削除した場合は、削除下状態の要素が取得できます。

getSelectorは同期されない

getElementsByTagNameは取得要素が変更された場合は同期されますが、同じ用途でよく使われるgetSelectorは同期されません。変更前の情報を取得したい場合はgetSelectorを使うと良いでしょう。

取得要素が1つでもリストを指定する

getElementsByTagNameはNodeListを返します。そのため、取得した要素が1つであっても、要素の取得はarrayのデータ取得のように、[0]の指定が必要です。

上記は取得したh1の中で1番最初の要素を返します。

まとめ

getElementsByTagNmeについて説明しました。間違いやすい注意点や構文をしっかり押さえておきましょう。教科書的な情報は以下を参考にしてみると良いでしょう。