Web開発

【初心者向け】List.jsの使い方|HTMLテーブルに検索・ソート・ページング機能を簡単追加!

スポンサーリンク

表に検索や並び替え、ページ送り機能をつけたいけど、複雑なJavaScriptや重たいライブラリを使うのはちょっと……。
そんな方におすすめなのが「List.js」です。
List.jsは、HTMLのテーブルやリストにソート・検索・ページネーションなどの機能を軽量かつシンプルなコードで追加できるJavaScriptライブラリです。

本記事では、初心者でもすぐに使えるようにList.jsの基本的な使い方から具体的なコード例まで、わかりやすく解説します。

  • コピペで試せるサンプル付き
  • CDNで簡単導入
  • jQuery不要で軽量

HTML/CSSが少しわかればすぐに使える内容になっているので、ぜひ活用してみてください!


🔗 公式ドキュメント

List.jsの最新情報APIリファレンス豊富なサンプルコードは、公式ドキュメントで確認できます。

公式サイト

GitHub

APIドキュメント


List.jsとは?どんなことができるの?

List.jsは、テーブルやリスト要素に「検索」「ソート」「フィルター」「ページネーション」などの機能を簡単に追加できる軽量JavaScriptライブラリです。
依存ライブラリがなく、数行のJavaScriptコードとHTMLのクラス設定だけで実装できます。

他のライブラリとの違いは?

ライブラリ名特徴学習コスト
List.js軽量・シンプル・依存なし
DataTables高機能・jQuery依存中〜高
AG Grid超高機能・商用ライセンスあり

「とりあえず検索・並び替え・ページ送りを使いたい」という場合は、List.jsが最適です。


List.jsを使う準備をしよう

CDNで読み込む方法(おすすめ)

<!-- JavaScript -->
<script src="//cdnjs.cloudflare.com/ajax/libs/list.js/2.3.1/list.min.js"></script>

CDNを使えばファイルをダウンロードする必要がなく、すぐに使い始められます。

ダウンロードして使う場合

List.js公式サイトから「list.min.js」をダウンロードし、任意の場所に配置してHTMLに読み込みます。

<!-- JavaScript -->
<script src="js/list.min.js"></script>

HTMLテーブルにソート機能を追加する

HTML

以下はList.jsでソート機能を実装するHTMLの例です。 data-sortに設定した値と<td>タグのクラス名を一致させることがポイントです。

<div id="table">
  <table>
    <thead>
      <tr>
        <th class="sort" data-sort="name">名前</th>
        <th class="sort" data-sort="age">年齢</th>
        <th class="sort" data-sort="place">出身</th>
        <th class="sort" data-sort="sex">性別</th>
      </tr>
    </thead>
    <tbody class="list">
      <tr>
        <td class="name">田中</td>
        <td class="age">24</td>
        <td class="place">福岡</td>
        <td class="sex">男</td>
      </tr>
      <!-- 以下略 -->
    </tbody>
  </table>
</div>

JavaScript

以下のスクリプトで、List.jsのインスタンスを生成して、並び替えの対象となる項目(valueNames)を設定しています。

var options = {
  // 並び替え項目
  valueNames: ['name', 'age', 'place', 'sex'],
};

// List.jsのインスタンス生成
var userList = new List('table', options);

CSS

ソート中の列に矢印アイコン(▲▼)を表示するためのCSSです。

th.sort {
  cursor: pointer;
}
th.sort.desc:after {
  content: "▼";
  margin-left: 8px;
  font-size: 14px;
}
th.sort.asc:after {
  content: "▲";
  margin-left: 8px;
  font-size: 14px;
}

ページネーション機能を追加する

HTMLの変更箇所

以下のHTMLを追加することで、ページ送り(ページネーション)を表示できます。

<div class="pager">
  <ul class="pagination"></ul>
</div>

JavaScriptの変更

1ページに表示する件数(page)と、ページャーの見た目に関する設定を追加しています。

var options = {
  // 並び替え項目
  valueNames: ['name', 'age', 'place', 'sex'],
  // 1ページに表示するデータ数
  page: 3,
  // ページネーション
  pagination: {
    paginationClass: 'pagination',  // ページネーションクラス名
    innerWindow: 1,  // ページの前後何ページ分のページャを表示するか
    outerWindow: 1,  // 最初と最後、何ページ分のページャを表示するか
  },
};

// List.jsのインスタンス生成
var userList = new List('table', options);

CSS例(必要に応じて調整)

ページネーションを中央に表示し、現在のページをハイライト表示するためのCSSです。

.pager ul {
  list-style: none;
  position: relative;
  left: 50%;
  float: left;
}
.pager ul li {
  margin: 0 5px;
  position: relative;
  left: -50%;
  float: left;
}
.pager ul li a {
  background-color: #EEE;
  color: #000;
  text-decoration: none;
  padding: 8px 15px;
  border-radius: 5px;
}

検索&フィルター機能を実装する

HTMLに検索ボックスとフィルターを追加

以下のように、検索入力と性別フィルタ用のチェックボックスを設置します。

<input type="search" class="search" placeholder="検索" />
<input type="checkbox" id="men" checked>男
<input type="checkbox" id="women" checked>女

JavaScriptの追加

チェックボックスの状態によって表示・非表示を切り替えるフィルター機能の実装です。

function filter() {
  // List.jsのフィルタリング
  userList.filter(function(item) {
    // 男のチェックボックスにチェックがついていて、データが男の場合
    if (sex_men.checked && item.values()['sex'] === '男') return true;

    // 女のチェックボックスにチェックがついていて、データが女の場合
    if (sex_women.checked && item.values()['sex'] === '女') return true;

    return false;
  });
}

// チェックボックスへイベント追加
var sex_men = document.getElementById("men");
var sex_women = document.getElementById("women");
sex_men.addEventListener('change', filter);
sex_women.addEventListener('change', filter);
filter();

List.jsを使ったサンプル(codepen)

ここまで説明をしてきた「検索」「ソート」「フィルター」「ページネーション」をまとめたサンプルプログラムです。

See the Pen List.jsのサンプル by take it easy (@take-it-easy) on CodePen.


よくある質問(FAQ)

Q
List.jsは無料で使えますか?
A

はい、MITライセンスなので無料で商用利用も可能です。

Q
jQueryは必要ですか?
A

いいえ、List.jsは純粋なJavaScriptで動作します。

Q
スマホ対応はできますか?
A

基本機能は対応しています。レイアウトはCSSで調整しましょう。

Q
データが多くなると重くなりますか?
A

数千件以上のデータには不向きです。大量データにはDataTablesなどを検討しましょう。

Q
ReactやVueと併用できますか?
A

原則Vanilla JS用ライブラリのため、React/Vueとの相性は良くありません。


まとめ|List.jsで表をもっと便利にしよう

List.jsは、検索・ソート・ページネーションといった便利な機能を、非常に簡単に追加できる軽量ライブラリです。
jQueryなどの依存も不要なので、学習コストが低く、個人開発や小規模な案件にも最適です。

「テーブルをもう少し便利にしたい」と感じたら、まずはList.jsを試してみてください!

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