Blog

新米エンジニアと学ぶDOM要素の取得

🎅 この記事は、ニフティアドベントカレンダー の9日目の記事です。

はじめに

こんにちは!新卒1年目のなべしまです。寒くなってきましたね。

街では華やかなクリスマスツリーが現れる季節になりました。そんな中、私の前に現れたのは複雑なDOMツリーでした。

筆者について

  • 入社:
    • 2025年4月(新卒1年目)
  • 担当業務:
    • カスタマーサポートグループ(ジョブローテ中)
    • コールセンター支援ツールの運用開発業務
  • TypeScript/JavaScript 開発経験
    • 学生時代の授業にて、少しだけ演習を行った程度

きっかけ

現在担当しているツールでは、開発言語としてTypeScriptを利用しています。業務中、DOMを操作する querySelector メソッドに遭遇しました。getElementById メソッドは知っていたのですが、両者の違いについて気になり、まとめてみようと思いました。

この記事では、JavaScript/TypeScriptで使えるさまざまなDOM要素取得メソッドの特徴や違いを解説します。知識の整理や新たな学びのきっかけになれば嬉しいです。


事前準備

DOMツリーについて

ブラウザは HTML を読み込むと、内部で DOM(Document Object Model) と呼ばれるツリー構造を生成します。DOM は文書をツリー構造で表現し、各ノードがオブジェクトを含みます。DOM のメソッドでツリーにアクセスし、文書構造やスタイル、コンテンツの変更ができます。

DOM は HTML をプログラムで操作するためのデータ構造です。そして、JavaScript が操作するのはこのツリー内の「ノード(要素)」となります。

要素について

  • HTMLElement
    • HTMLのタグ1つ分を表すオブジェクト(例: <div>, <p>, <button> など)
  • HTMLCollection
    • HTMLElementの汎用的な集合(配列風オブジェクト)
    • 動的であり、DOM の変更が自動的に反映
  • NodeList
    • ノードのコレクション(配列風オブジェクト)
    • querySelectorAll が返す NodeList は静的
    • DOM の変更は反映されない

DOM要素を取得する方法

例えば、以下のようなHTMLドキュメントを見てみましょう。ここから、要素を単一で取得したいことを考えます。

要素取得メソッドの例

  • idから取得する場合

    getElementById でidを指定することでHTMLElementオブジェクトを取得できます。要素が見つからない場合は null を返します。

  • classから取得する場合

    getElementsByClassName でclassを指定することによって、HTMLCollectionオブジェクトを取得できます。このとき、単一要素で取得したい場合は、HTMLCollectionの要素番号を指定する必要があります。

    複数のクラス名を指定する場合は、半角スペースで区切ります。

  • タグ名から取得する場合

    getElementsByTagName でタグ名を指定することによって、HTMLCollectionオブジェクトを取得できます。getElementsByClassName と同様に、単一要素で取得したい場合は、HTMLCollectionの要素番号を指定する必要があります。

querySelectorでの要素取得

利用方法

  • CSSセレクタを利用した要素取得

    querySelector では、id、class、タグ名など、CSS セレクタを利用して要素を取得することができます。要素が見つからない場合は null を返します。

  • 複数のCSSセレクタを利用

    親要素と子要素の間に半角スペースを入れて指定することで、子孫要素を取得することができます。

  • 検索方式

    querySelector メソッドは指定されたセレクタに一致する、ドキュメント内の最初のHTMLElementを返します。

    直前の例のような式では、「名前: なべしま」を含むDOM要素は取得できますが、「職業:システムエンジニア」が含まれるDOM要素を取得したい場合は、2番目の要素を取得する必要があります。

  • 複数の要素を取得する場合

    querySelectorAll を使用すると、一致するすべての要素を NodeList として取得できます。

まとめ

今回登場した、DOM要素取得のメソッドを表にまとめます。

メソッド 戻り値の型 特徴
getElementById HTMLElement | null IDで単一要素を取得
getElementsByClassName HTMLCollection クラス名で複数要素を取得(ライブコレクション)
getElementsByTagName HTMLCollection タグ名で複数要素を取得(ライブコレクション)
querySelector HTMLElement | null CSSセレクタで最初の要素を取得
querySelectorAll NodeList CSSセレクタで全ての要素を取得(静的)

実務では便利な querySelector を利用しましたが、その他のDOM要素取得メソッドの特徴や戻り値の型の違いを知り、学びになりました。

今回の学びを、今後のDOM操作の実装や、思い通りに動かない時のエラー究明に役立てていきたいです。


参考文献

 

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!