JavaScriptページング実装のステップバイステップガイド7選

JavaScriptでページングを実装する方法を学ぶJS
この記事は約9分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptでページングを実装する方法がマスターできるようになります。

ページングは、データが多くなると特に必要となる機能で、ユーザーにとっても便利です。

この記事では、JavaScriptでページングを実装する方法を初心者にも分かりやすく、ステップバイステップで解説していきます。

サンプルコードを参考にしながら、使い方や注意点、カスタマイズ方法を学んでいきましょう。

●JavaScriptページングの基本概念

○ページングとは

ページングとは、データを分割して表示することです。

例えば、検索結果やブログ記事一覧など、一度に全てのデータを表示するとユーザーが見づらくなってしまう場合に、ページングを利用してデータを分割表示します。

○なぜページングが必要か

ページングは、次のような理由から必要とされます。

  1. ユーザビリティ向上:一度に多くのデータを表示すると、ユーザーが探している情報を見つけにくくなるため、ページングでデータを分割することで、ユーザビリティを向上させます。
  2. パフォーマンス改善:大量のデータを一度に表示すると、ページの読み込み速度が遅くなるため、ページングでデータを分割することで、パフォーマンスを改善できます。

●ページング実装のステップバイステップガイド

○サンプルコード1:HTMLとCSSの準備

このコードでは、ページングに必要なボタンやページ番号を表示するためのHTMLとCSSを設定しています。

この例では、ページング用のボタンやページ番号を表示するためのスタイルを定義しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ページング実装サンプル</title>
  <style>
    .pagination {
      display: flex;
      justify-content: center;
      align-items: center;
      list-style: none;
      margin: 0;
      padding: 0;
    }
    .pagination li {
      margin: 0 5px;
    }
    .pagination button {
      border: none;
      background-color: transparent;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <div id="data-container"></div>
  <ul class="pagination">
    <li>
      <button id="prev" disabled>前へ</button>
    </li>
    <li>
      <button id="next" disabled>次へ</button>
    </li>
  </ul>
</body>
</html>

○サンプルコード2:データの取得と表示

次に、データを取得して表示するためのコードを用意します。

この例では、簡単なデータを配列で用意し、データを表示する機能を実装しています。

const data = [
  // データを配列で用意
];

function displayData(page, perPage) {
  const startIndex = (page - 1) * perPage;
  const endIndex = startIndex + perPage;
  const displayData = data.slice(startIndex, endIndex);

  const dataContainer = document.getElementById("data-container");
  dataContainer.innerHTML = '';

  displayData.forEach(item => {
    const listItem = document.createElement("p");
    listItem.textContent = item;
    dataContainer.appendChild(listItem);
  });
}

○サンプルコード3:ページング機能の追加

ページング機能を追加するためのコードを実装します。

この例では、現在のページ数を管理する変数と、ページを切り替える関数を定義しています。

let currentPage = 1;
const perPage = 5;

function nextPage() {
  currentPage++;
  updatePagination();
}

function prevPage() {
  currentPage--;
  updatePagination();
}

function updatePagination() {
  displayData(currentPage, perPage);
}

○サンプルコード4:ページ番号の表示と移動

現在のページ番号を表示し、ページを移動する機能を実装します。

この例では、ページ番号の表示と、前後のページへの移動を可能にしています。

function updatePageNumber() {
  const pageNumber = document.getElementById("page-number");
  pageNumber.textContent = `ページ ${currentPage}`;
}

function initPagination() {
  const prevButton = document.getElementById("prev");
  const nextButton = document.getElementById("next");

  prevButton.addEventListener("click", () => {
    prevPage();
    updatePageNumber();
  });

  nextButton.addEventListener("click", () => {
    nextPage();
    updatePageNumber();
  });
}

initPagination();

○サンプルコード5:前後のページへの移動

このコードでは、前後のページへの移動ができるようにしています。

この例では、前後のページに移動する関数を作成し、それぞれのボタンにイベントリスナーを設定しています。

function prevPage() {
  if (currentPage > 1) {
    currentPage--;
    updatePagination();
  }
}

function nextPage() {
  if (currentPage < Math.ceil(data.length / perPage)) {
    currentPage++;
    updatePagination();
  }
}

○サンプルコード6:ページ表示数のカスタマイズ

このコードでは、表示するページ数をカスタマイズできるようにしています。

この例では、表示するデータの数を変更するための設定を追加しています。

function setPerPage(newPerPage) {
  perPage = newPerPage;
  updatePagination();
}

○サンプルコード7:Ajaxを使ったページング

このコードでは、Ajaxを使ってデータを取得し、ページングを実装しています。

この例では、外部からデータを取得し、それをもとにページングを構築しています。

async function fetchData(url) {
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

async function displayDataWithAjax(page, perPage) {
  const url = `https://api.example.com/data?page=${page}&perPage=${perPage}`;
  const data = await fetchData(url);

  // データ表示処理
}

function updatePaginationWithAjax() {
  displayDataWithAjax(currentPage, perPage);
}

●注意点と対処法

ページング機能を実装する際には、次の注意点があります。

  1. ページ番号の表示範囲を適切に設定することが重要です。
    範囲が広すぎると、ユーザビリティが低下する恐れがあります。適切な表示範囲を設定し、ユーザが容易に目的のページに移動できるようにしましょう。
  2. Ajaxを使う場合、ブラウザの戻るボタンが正常に機能しないことがあるため、履歴APIを利用して戻るボタンの挙動を制御することが必要です。
    これにより、ユーザが自然な操作感でページングを利用できるようになります。
  3. レスポンシブデザインに対応させることで、デバイスの画面サイズに応じたページング表示が可能になります。
    CSSで適切なスタイルを設定し、すべてのデバイスで快適に利用できるページングを実現しましょう。

●カスタマイズ方法

ページング機能をカスタマイズする際には、次の方法が考えられます。

  1. ページ番号のデザインを変更することで、サイトのデザインやブランドに合わせたページングを実現できます。
    CSSを活用して、見た目をカスタマイズしましょう。
  2. ページング機能にアニメーションを追加することで、より魅力的なページングを実現できます。
    JavaScriptやCSSアニメーションを利用して、スムーズなページ切り替えを実現しましょう。
  3. ページングの表示位置を変更することで、ユーザにとって使いやすいページングを実現できます。
    ページングを上部、下部、または両方に表示するなど、ユーザが目的のページに容易にアクセスできる配置を考慮しましょう。

まとめ

この記事では、ページング機能の実装方法やカスタマイズ方法、注意点と対処法について解説しました。

適切なページング機能を実装することで、ユーザが目的の情報に容易にアクセスできるようになり、サイトの利便性が向上します。ぜひ、この記事を参考にページング機能を実装してみて下さい。