カテゴリ: JavaScript 更新日: 2026/08/07

JavaScriptでURLフラグメント(#ハッシュ)を簡単に操作する方法!初心者向け解説

JavaScriptでURLフラグメント(#ハッシュ)を操作する方法
JavaScriptでURLフラグメント(#ハッシュ)を操作する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、ウェブページのURLにある#の後ろの部分って何ですか?」

先生

「それはURLフラグメント、またはハッシュと呼ばれる部分で、ページ内の特定の場所にジャンプしたり、状態を管理するために使われます。」

生徒

「JavaScriptでそのハッシュを変更したり読み取ったりできるんですか?」

先生

「はい、JavaScriptでは簡単に操作できます。今回は初心者向けに基本から丁寧に解説します。」

1. URLフラグメントとは何か?

1. URLフラグメントとは何か?
1. URLフラグメントとは何か?

URLフラグメントとは、ウェブページのURLで#から始まる部分のことです。例えば、https://example.com/page#section1の場合、#section1がフラグメントです。これはページ内の特定の場所を指し示すために使われます。ユーザーがページ内リンクをクリックしたときにスクロール位置を指定したり、JavaScriptで状態を管理することもできます。

2. JavaScriptでハッシュを読み取る方法

2. JavaScriptでハッシュを読み取る方法
2. JavaScriptでハッシュを読み取る方法

JavaScriptで現在のURLのフラグメントを取得するには、location.hashを使います。これは文字列として返されます。


console.log(location.hash); // 現在のハッシュを表示

(例)#section1

このように表示されます。URLに#がなければ空文字列が返ります。

3. ハッシュを変更する方法

3. ハッシュを変更する方法
3. ハッシュを変更する方法

ハッシュを変更するとページ内のスクロール位置を移動させたり、状態を切り替えることができます。location.hashに値を代入するだけで簡単に変更できます。


location.hash = "section2"; // ハッシュを#section2に変更
console.log(location.hash); // #section2と表示される

4. ハッシュ変更を検知する方法

4. ハッシュ変更を検知する方法
4. ハッシュ変更を検知する方法

ユーザーがリンクをクリックしたりJavaScriptでハッシュを変更したときに処理を行いたい場合、hashchangeイベントを使います。


window.addEventListener("hashchange", function() {
  console.log("ハッシュが変わりました:", location.hash);
});

このコードをページに入れると、ハッシュが変更されるたびにコンソールに新しい値が表示されます。

5. ページ読み込み時にハッシュをチェックする方法

5. ページ読み込み時にハッシュをチェックする方法
5. ページ読み込み時にハッシュをチェックする方法

ページを開いたときにすでにハッシュがある場合、それを読み取って特定の処理を行うこともできます。


window.addEventListener("load", function() {
  if (location.hash) {
    console.log("現在のハッシュ:", location.hash);
  }
});

例えば、#aboutというハッシュがある場合にそのセクションにスクロールする処理を追加できます。

6. JavaScriptでハッシュを使った簡単なページ内移動

6. JavaScriptでハッシュを使った簡単なページ内移動
6. JavaScriptでハッシュを使った簡単なページ内移動

ハッシュを使ってページ内のセクションに移動する簡単な例です。


document.querySelectorAll("a[href^='#']").forEach(function(anchor) {
  anchor.addEventListener("click", function(e) {
    e.preventDefault(); // デフォルトのジャンプを防ぐ
    location.hash = this.getAttribute("href").substring(1);
  });
});

このコードは、すべてのハッシュリンクに対してクリックしたときにハッシュを更新し、ページ内移動を制御します。

7. ハッシュを使った状態管理の例

7. ハッシュを使った状態管理の例
7. ハッシュを使った状態管理の例

ハッシュはページの状態を管理するのにも使えます。例えば、タブの切り替え状態をURLに保存することが可能です。


function showTab(tabName) {
  location.hash = tabName; // URLに状態を反映
  document.querySelectorAll(".tab").forEach(tab => tab.style.display = "none");
  document.getElementById(tabName).style.display = "block";
}

window.addEventListener("hashchange", function() {
  showTab(location.hash.substring(1));
});

// 初期表示
if (location.hash) {
  showTab(location.hash.substring(1));
} else {
  showTab("home");
}

これにより、URLを共有しても同じタブが表示されるので便利です。

8. ハッシュ操作の注意点とブラウザ互換性

8. ハッシュ操作の注意点とブラウザ互換性
8. ハッシュ操作の注意点とブラウザ互換性

ハッシュの操作は古いブラウザでもサポートされていますが、以下の点に注意しましょう。
- location.hashは文字列なので、値の先頭に#を付ける必要はありません。
- スクロール位置を自動で移動させたくない場合は、イベントで制御する必要があります。
- 外部サイトのリンクではハッシュの変更は影響しません。

9. まとめの前に覚えておきたいポイント

9. まとめの前に覚えておきたいポイント
9. まとめの前に覚えておきたいポイント

JavaScriptでURLフラグメント(#ハッシュ)を操作することで、ページ内の移動や状態管理が簡単にできます。
初心者の方はまず以下のポイントを覚えておきましょう。
- location.hashで現在のハッシュを取得できる
- location.hash = "値"でハッシュを変更できる
- hashchangeイベントでハッシュの変化を検知できる
- ページ読み込み時にハッシュをチェックして初期状態を設定できる

まとめ

まとめ
まとめ

本記事では、JavaScriptでURLフラグメント(#ハッシュ)を初心者でもわかりやすく操作する方法について詳しく解説しました。URLフラグメントはページ内リンクや状態管理に便利で、location.hashを使えば現在のハッシュを取得したり、簡単に変更したりすることができます。また、hashchangeイベントを活用することで、ユーザーの操作やJavaScriptによる変更に応じて動的に処理を行うことが可能です。ページ読み込み時のハッシュチェックを組み合わせれば、初期表示の状態をURLに応じて設定することもでき、タブ切り替えなどの状態管理にも活用できます。さらに、ページ内移動をスムーズにしたり、URL共有時に同じ状態を再現したりすることで、ユーザー体験を向上させることができます。 初心者の方でも、基本的な操作方法やイベントの使い方を理解することで、ウェブページ内のナビゲーションや状態管理を自由に制御できるようになります。

サンプルコードまとめ

以下は、これまで紹介したハッシュ操作の基本例をまとめたサンプルです。


// ハッシュの取得
console.log(location.hash);

// ハッシュの変更
location.hash = "section2";

// ハッシュ変更の検知
window.addEventListener("hashchange", function() {
console.log("ハッシュが変わりました:", location.hash);
});

// ページ読み込み時にハッシュをチェック
window.addEventListener("load", function() {
if (location.hash) {
console.log("現在のハッシュ:", location.hash);
}
});

// ページ内リンクをクリックしたときのハッシュ操作
document.querySelectorAll("a[href^='#']").forEach(function(anchor) {
anchor.addEventListener("click", function(e) {
e.preventDefault();
location.hash = this.getAttribute("href").substring(1);
});
});

// タブ切り替えの例
function showTab(tabName) {
location.hash = tabName;
document.querySelectorAll(".tab").forEach(tab => tab.style.display = "none");
document.getElementById(tabName).style.display = "block";
}

window.addEventListener("hashchange", function() {
showTab(location.hash.substring(1));
});

if (location.hash) {
showTab(location.hash.substring(1));
} else {
showTab("home");
}
先生と生徒の振り返り会話

生徒

「先生、ハッシュの基本は理解できましたが、どんなときに使うのが一番便利ですか?」

先生

「例えば、ページ内の特定のセクションにスクロールさせたいときや、タブやモーダルなどの状態をURLで管理したいときにとても便利です。ユーザーがリンクを共有しても同じ状態を再現できるのがポイントです。」

生徒

「なるほど、ハッシュを変更するだけでページ遷移しなくても状態を変えられるんですね。」

先生

「そうです。さらにhashchangeイベントを組み合わせれば、ユーザー操作に応じた処理も自動で行えるので、動的なページ作りにも向いています。」

生徒

「リンクをクリックしたときのスクロール制御もできるし、タブの状態管理も簡単にできるんですね。」

先生

「そうです。JavaScriptでURLフラグメントを上手に活用すると、ユーザーにとって使いやすく、開発者にとっても管理しやすいページが作れます。今回学んだ基本操作とイベントの使い方を押さえておけば、応用も簡単です。」

生徒

「これで、ページ内リンクの動きやタブ切り替えなど、実際に使える例も理解できました。」

先生

「はい。まずは基本をしっかり覚えて、実際に自分のウェブページでハッシュを使った動作を試してみることが成長の近道です。」

関連記事:
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptでURLを正規化(canonical)する方法を徹底解説!初心者向けにわかりやすく解説
New2
TypeScript
TypeScriptの型まとめ!安全で保守性の高いコードを書く方法
New3
TypeScript
TypeScriptのプロジェクトをtscでビルドする基本操作を解説!初心者にもわかるステップバイステップ
New4
Claude Code
Claude Codeの基本的な使い方!起動から終了まで初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptの文字列を分割する方法(splitメソッド)
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptで要素の表示・非表示を切り替える方法(display・visibility)を完全解説
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptでフォームの値を取得する方法を徹底解説!valueプロパティの使い道
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptで最初に覚えたい基本構文まとめ
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのライブラリとは?標準ライブラリと外部ライブラリの違いと使い方
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptでクライアントとサーバーのバリデーションを共通化する方法!初心者向けデータ検証入門