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操作を行うために最も基本となる重要なメソッドです。