getElementById, querySelectorの違い | DOM APIの基本 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

getElementByIdとquerySelectorとは?

JavaScriptでHTMLを操作するには、まず対象となる要素を取得する必要があります。

そのためによく使われるのが、getElementById()querySelector()です。

どちらもHTML要素を取得するメソッドですが、指定方法や取得できる要素に違いがあります。本記事では、それぞれの特徴と使い分けを初心者向けに解説します。

getElementByIdとは?

getElementById()は、指定したIDを持つ要素を取得するメソッドです。

HTMLでは、同じIDは通常1つしか存在しないため、このメソッドは1つの要素を取得します。

基本的な使い方

// IDが「myElement」の要素を取得
const element = document.getElementById("myElement");

// テキストを変更
element.textContent = "テキストが変更されました!";

この例では、IDがmyElementの要素を取得し、その文字列を変更しています。

  • IDを指定して要素を取得します。
  • 取得できる要素は通常1つです。
  • 取得した要素は変数へ保存して操作できます。

特徴

  • IDを指定して要素を取得する。
  • HTML内でIDは一意なので、通常は1つだけ取得される。
  • 記述がシンプルで分かりやすい。

querySelectorとは?

querySelector()は、CSSセレクタを使って要素を取得するメソッドです。

IDだけでなく、クラス名やタグ名、属性など、CSSで指定できるセレクタをそのまま利用できます。

基本的な使い方

// クラス名が「myClass」の最初の要素を取得
const element = document.querySelector(".myClass");

// 文字色を変更
element.style.color = "red";

この例では、クラス名がmyClassの最初の要素を取得し、文字色を赤色へ変更しています。

  • CSSセレクタを使って要素を取得します。
  • 一致する要素が複数ある場合は、最初の1つだけ取得します。
  • クラス名なら「.」、IDなら「#」を付けて指定します。

特徴

  • CSSセレクタがそのまま利用できる。
  • クラス・ID・タグ・属性などを自由に指定できる。
  • 最初に一致した要素だけを取得する。

getElementByIdとquerySelectorの違い

両者の違いをまとめると、次のようになります。

メソッド 指定方法 取得できる要素
getElementById() IDのみ IDに一致する要素
querySelector() CSSセレクタ 最初に一致した要素

querySelector()は、より柔軟に要素を取得できます。

CSSセレクタの指定例

querySelector()では、次のようなCSSセレクタが利用できます。

取得したい要素 指定方法
IDがmainの要素 "#main"
クラスがitemの要素 ".item"
すべての<p>要素の先頭 "p"
class="menu"の中の<li> ".menu li"
type="text"の入力欄 "input[type='text']"

このように、CSSを書ける人なら直感的に要素を指定できます。

どちらを使うべき?

用途によって使い分けるのがおすすめです。

  • IDで取得するだけならgetElementById()が分かりやすい。
  • クラスやタグを指定したい場合は、querySelector()を使う。
  • 複雑な条件で要素を取得したい場合も、querySelector()が便利。

最近のJavaScriptでは、柔軟に指定できるquerySelector()を利用する場面が増えています。

実際の使用例

getElementByIdを使った例

// ページタイトルを取得
const title = document.getElementById("pageTitle");

// テキストを変更
title.textContent = "新しいページタイトル";

IDが決まっている要素を取得する場合は、このようにシンプルに書けます。

querySelectorを使った例

// クラス名でボタンを取得
const button = document.querySelector(".btn-primary");

// 背景色を変更
button.style.backgroundColor = "green";

クラス名を指定して最初のボタンを取得し、背景色を変更しています。

複数の要素を取得したい場合

今回紹介した2つのメソッドは、どちらも1つの要素を取得します。

複数の要素を取得したい場合は、querySelectorAll()を使用します。

// すべてのli要素を取得
const items = document.querySelectorAll("li");

console.log(items.length);

querySelectorAll()については、別の記事で詳しく解説します。

まとめ

  • getElementById()は、IDを指定して要素を取得するメソッドです。
  • querySelector()は、CSSセレクタを使って要素を取得するメソッドです。
  • querySelector()は、最初に一致した要素を取得します。
  • IDだけならgetElementById()、柔軟な指定ならquerySelector()が便利です。
  • 複数の要素を取得したい場合はquerySelectorAll()を使用します。
  • DOM操作を行うために最も基本となる重要なメソッドです。