【JavaScript入門】getElementByIdとquerySelectorの違いとは?初心者向けにやさしく解説

JavaScript基礎

1.はじめに

JavaScriptでWebページを操作するときに、「HTMLの要素を取得する」という作業はとてもよく出てきます。
このときによく使われるのが、getElementByIdquerySelector の2つです。

名前は似ていますが、実はこの2つには「指定できる方法」や「使いどころ」に違いがあります。

「何が違うの?」「どっちを使えばいいの?」という初心者の疑問を、この記事でスッキリ解消しましょう!

2.getElementByIdとは?

getElementById は、HTMLのID属性を指定して、その要素を取得するためのメソッドです。
JavaScriptで最も基本的な要素取得方法のひとつで、使い方もとてもシンプルです。

基本の書き方

const 要素 = document.getElementById("ID名");
  • "ID名"の部分には、HTMLで指定されたidの値を入れます。
  • #は不要です(CSSセレクタではないため)。

使用例

HTML側
<h1 id="title">こんにちは!</h1>
JavaScript側
const el = document.getElementById("title");
console.log(el.textContent); // → こんにちは!

このように、HTML内のid="title"がついた要素を取得し、textContentで中の文字を読み取ることができます。

特徴まとめ

項目内容
対象id属性だけ
取得できる数一致する1つの要素
#の有無不要"title"と指定)
処理速度速く、軽い
初心者向け度非常に使いやすく、覚えやすい

注意ポイント

  • ページ内に同じIDが2つ以上あると、想定外の挙動になります(IDは本来、1つのページに1つだけ)。
  • クラス名やタグ名で取得したい場合には使えません。

3.querySelectorとは?

querySelector は、CSSセレクタを使ってHTMLの要素を1つ取得できるメソッドです。
柔軟に指定できるのが特徴で、IDだけでなくクラスやタグ名、複雑な階層構造まで対応しています。

基本の書き方

const 要素 = document.querySelector("CSSセレクタ");
  • CSSセレクタと同じ記述方法で指定します(#id, .class, div > pなど)
  • 一致する最初の1つだけが取得されます

使用例

HTML側
<h1 id="title" class="main-heading">こんにちは!</h1>
JavaScript側(いろんな指定方法)
const el1 = document.querySelector("#title");         // IDで取得
const el2 = document.querySelector(".main-heading");  // クラスで取得
const el3 = document.querySelector("h1");             // タグで取得

console.log(el1.textContent); // → こんにちは!

特徴まとめ

項目内容
対象CSSセレクタ全般(ID, クラス, タグなど)
取得できる数一致する最初の1つのみ
#.の指定必要(CSSと同じ)
処理速度やや遅いが、柔軟で便利
初心者向け度少し慣れが必要だが応用力が高い

注意ポイント

  • 複数の要素を取得したい場合は querySelectorAll を使います
  • CSSセレクタに慣れていないと、少し難しく感じることもあります

4.違いを比較してみよう!

ここまでで getElementByIdquerySelector の基本的な使い方は分かりました。
このセクションでは、2つのメソッドの違いをわかりやすく一覧で比較してみましょう。

比較表

比較項目getElementByIdquerySelector
指定方法id名#は不要)CSSセレクタ形式(#id, .classなど)
対象ID属性のみID、クラス、タグ、複雑な構造もOK
戻り値一致する要素1つ一致する最初の要素1つ
複数要素の取得❌ 不可❌ ※複数はquerySelectorAll()で取得
柔軟性限定的非常に高い
パフォーマンス高速わずかに遅い(実用上ほぼ差なし)
初心者へのわかりやすさ◎ わかりやすい△ CSSセレクタの理解が必要

ポイントまとめ

  • シンプルにIDだけ取得したいなら getElementById が便利
  • いろんな指定方法で要素を選びたいなら querySelector が最適

このように、目的や状況によって使い分けるのがポイントです。

5.よくある間違いと注意点

getElementByIdquerySelector は似ているようでルールが異なります。
ここでは、初心者の方がよくやってしまうミスや注意点を紹介します。

getElementByIdに # をつけてしまう

document.getElementById("#title"); // ❌ → エラーになる
document.getElementById("title");  // ✅ → 正しい書き方

getElementByIdは「ID名だけ」を直接指定します。CSSセレクタのように#は不要です。

querySelectorに # をつけ忘れる

document.querySelector("title");   // ❌ → <title>タグと誤解されることも
document.querySelector("#title");  // ✅ → 正しい書き方

querySelectorCSSと同じ指定方法が必要です。
IDなら#title、クラスなら.classNameのようにセレクタ記号を忘れずに。

同じIDが複数あると動作が不安定に

HTMLでは、同じIDはページ内に1つだけというルールがあります。
しかし、間違って同じIDを複数の要素につけてしまうと、どれが取得されるか分からなくなるため注意しましょう。

<!-- NGな例(IDが重複している) -->
<div id="box">1つめ</div>
<div id="box">2つめ</div>
const el = document.getElementById("box");
console.log(el.textContent); // → どちらか1つだけが取得される(不安定)

解決方法

  • 複数使いたい場合は idではなく class にする
  • それに応じて querySelector または querySelectorAll を使う

6.初心者にはどちらがオススメ?

ここまでで getElementByIdquerySelector の使い方や違いを理解できたと思います。
では実際に、初心者の方はどちらを使えばいいのでしょうか?

目的別のおすすめ早見表

やりたいことおすすめのメソッド
IDで1つの要素をピンポイントで操作したいgetElementById
クラス名で指定したいquerySelector
タグ名(例:h1, pなど)で選びたいquerySelector
複雑なCSSセレクタ(例:div > p span)を使いたいquerySelector
1ページに1つしかない要素を手っ取り早く取得したいgetElementById

初心者へのアドバイス

  • まずは getElementById を使って基本の操作に慣れましょう。
  • CSSセレクタ(.クラス名#ID名)を理解してきたら、querySelector にも挑戦すると、表現の幅が一気に広がります!

✅ 結論:
「IDで1つだけ」なら getElementById
それ以外は querySelector が便利!

7.まとめ

この記事では、JavaScriptでHTML要素を取得する2つの方法
getElementById」と「querySelector」の違いについて初心者向けに解説しました。

ポイントを振り返ると…

  • getElementById
    → ID属性専用。書き方がシンプルで、初心者でも使いやすい
  • querySelector
    → CSSセレクタで柔軟に要素を取得できる。クラスやタグ名にも対応

迷ったときはこのルール!

IDで1つの要素を確実に取得したいなら getElementById
それ以外(クラス・タグ・構造で取得したい)なら querySelector


HTML,CSSを学ぶ方々におすすめの書籍です。

僕自身、様々なプログラミングの本を購入しましたが、こちらの[HTML&CSSとWebデザインが1冊できちんと身につく本]が一番わかりやすく、一冊で基本を一通り学べる内容になっています。


HTML&CSSとWebデザインが1冊できちんと身につく本[増補改訂版] [ 服部雄樹 ]

コメント

タイトルとURLをコピーしました