JavaScriptのquerySelector完全理解!初心者が確実にマスターする方法
こんにちは、とまだです。
「querySelector」って聞いて、「なんだか難しそう...」と思っていませんか?
私も最初は「getElementById」で十分じゃない?と思っていました。でも、querySelectorを使えるようになってから、コードがスッキリして開発効率が劇的に上がったんです。
今回は、JavaScriptのquerySelectorを「図書館の本探し」に例えながら、誰でも理解できるように解説していきます。
querySelectorとは?図書館の司書さんのような存在
querySelectorって、難しく感じますよね。
でも実は、図書館で本を探してくれる優秀な司書さんのようなものなんです。
図書館で本を探すとき、こんな風に頼みますよね。
- 「青い表紙の本を探して」
- 「プログラミングコーナーの一番上の棚にある本」
- 「著者が○○さんの本」
querySelectorも同じです。
// 青いボタンを探して
document.querySelector('.blue-button');
// ヘッダーの中にあるタイトル
document.querySelector('header h1');
// ID が main のエリア
document.querySelector('#main');
HTMLの中から、あなたが指定した条件に合う要素を見つけてくれる。それがquerySelectorの役割です。
なぜquerySelectorが必要なのか
「getElementByIdがあるのに、なぜquerySelectorが必要なの?」
そう思うかもしれません。
例えば、こんな状況を考えてみてください。
getElementByIdだけの場合:
// それぞれ別の方法で取得...面倒!
let title = document.getElementById('title');
let buttons = document.getElementsByClassName('btn');
let firstP = document.getElementsByTagName('p')[0];
3つの要素を取得するのに、3つの違うメソッドを使っています。覚えるのも大変ですよね。
querySelectorを使う場合:
// 全部同じ方法で取得できる!
let title = document.querySelector('#title');
let button = document.querySelector('.btn');
let firstP = document.querySelector('p');
スッキリしました!querySelectorなら、1つの方法ですべての要素を取得できるんです。
querySelectorの基本的な使い方
では、実際にquerySelectorを使ってみましょう。
CSSセレクタで要素を指定する
querySelectorの素晴らしいところは、CSSと同じ書き方で要素を指定できることです。
// IDで指定(#を使う)
let header = document.querySelector('#header');
// クラスで指定(.を使う)
let button = document.querySelector('.submit-button');
// タグ名で指定
let paragraph = document.querySelector('p');
// 複雑な指定も可能
let navLink = document.querySelector('nav ul li a');
CSSを書いたことがある人なら、すぐに使いこなせるはずです。
querySelector vs querySelectorAll
実は、querySelectorには兄弟がいます。
- querySelector:最初の1つだけ取得
- querySelectorAll:条件に合うすべてを取得
図書館で例えると:
- querySelector:「プログラミングの本を1冊だけ持ってきて」
- querySelectorAll:「プログラミングの本を全部持ってきて」
// 最初の段落だけ取得
let firstP = document.querySelector('p');
// すべての段落を取得
let allP = document.querySelectorAll('p');
// 取得した要素の数を確認
console.log(allP.length); // 例:5
getElementByIdとの使い分け方
「結局、どっちを使えばいいの?」と迷いますよね。
私の経験から言うと、こんな使い分けがおすすめです。
getElementByIdを使う場面
- IDで取得するだけでいい時
- 少しでも処理速度を速くしたい時
実は、getElementByIdの方がわずかに高速です。でも、体感できるほどの差はありません。
querySelectorを使う場面
- 複雑な条件で要素を探したい時
- コードの統一感を大事にしたい時
- CSSセレクタに慣れている時
最近は、ほとんどの場面でquerySelectorを使うのが主流になっています。
よくあるつまずきポイントと解決法
1. 要素が見つからない
「querySelector使ったのに、要素が取得できない!」
これ、本当によくあります。
原因と解決法:
// ❌ よくある間違い
let button = document.querySelector('button');
button.addEventListener('click', function() {
// エラー!buttonがnullの可能性
});
// ✅ 正しい方法
let button = document.querySelector('.my-button');
if (button) {
button.addEventListener('click', function() {
console.log('クリックされました');
});
}
要素が存在するか確認してから使うのがポイントです。
2. タイミングの問題
HTMLが読み込まれる前にJavaScriptが実行されると、要素が見つかりません。
// ✅ DOMContentLoadedを使う
document.addEventListener('DOMContentLoaded', function() {
let title = document.querySelector('h1');
// ここなら確実に要素が存在する
});
ページの読み込みが完了してから実行する。これが鉄則です。
3. querySelectorAllの扱い方
querySelectorAllは配列「のようなもの」を返します。
let buttons = document.querySelectorAll('.btn');
// ❌ これはエラー
buttons.addEventListener('click', handler);
// ✅ 正しい方法
buttons.forEach(function(button) {
button.addEventListener('click', handler);
});
複数の要素には、forEachで1つずつ処理を適用します。
実践的な使い方:フォームバリデーション
実際のプロジェクトでよく使う例を見てみましょう。
// フォームの入力チェック
document.addEventListener('DOMContentLoaded', function() {
// 送信ボタンを取得
let submitBtn = document.querySelector('#submit-btn');
submitBtn.addEventListener('click', function(e) {
e.preventDefault();
// 必須項目をすべて取得
let requiredFields = document.querySelectorAll('.required');
let hasError = false;
// 各フィールドをチェック
requiredFields.forEach(function(field) {
if (field.value === '') {
field.style.border = '2px solid red';
hasError = true;
} else {
field.style.border = '1px solid #ccc';
}
});
if (!hasError) {
console.log('フォーム送信OK!');
}
});
});
このように、querySelectorを使えば複雑な処理もシンプルに書けます。
まとめ:querySelectorは万能な要素取得ツール
querySelectorについて、理解できましたか?
今日学んだポイント:
- querySelectorはCSSセレクタで要素を取得できる
- 1つの方法ですべての要素取得が可能
- querySelectorAllで複数要素も簡単に扱える
- 要素の存在確認を忘れずに
querySelectorをマスターすれば、DOM操作が格段に楽になります。
もっと体系的にJavaScriptを学びたい方は、Learning NextのJavaScriptコースがおすすめです。
1,300問以上の練習問題で、querySelectorを含むDOM操作を確実に身につけられます。月額約2,000円で、挫折しない工夫が満載です。
特にJavaScript学習完全ガイドでは、DOM操作の基礎から応用まで詳しく解説しています。
さあ、今すぐブラウザの開発者ツールを開いて、querySelectorを試してみましょう!
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →