ホームページ作成/テーブル(表)の作成・装飾 (HTML,CSS)

TablesorterでHTMLの表をソート(並び替え)可能にする(4ページ目)

ウェブ上に掲載された表形式のデータでも、Excelなどの表計算ソフトと同様に並び替え(ソート)機能が使えると便利です。jQuery(JavaScript)で作られたTablesorterスクリプトを使えば、table要素で記述されたHTMLの表に対してもソート機能を加えられます。Tablesorterの使い方と、オプションの書き方を解説。閲覧者が自由に並べ替えできるテーブルを作ってみましょう。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

「漢字」や「単位付き数値」などが含まれる項目でも、意図通りにソートさせる方法

単位を含めると、数値ではなく文字としてソートされるため、意図通りに並ばない

単位を含めると、数値ではなく文字としてソートされるため、意図通りに並ばない

右図に示した「単位の付いた数値」などのように、数字以外の文字が含まれているセルは「文字列」としてソートされます。そのため、そのままでは「100万人」→「2,000万人」→「30万人」のように、数値として正しい順序にはソートされません。

※先頭の2文字だけを見ると、「約1」→「約2」→「約3」と並んでおり、文字としては正しい順序になっています。

そこで、Tablesorterには「表のセル内に実際に書かれている文字列」ではなく、以下のような書式を使って「class属性値に書かれた文字列」を使ってソートする機能が用意されています。
<td class="{sortValue: 1327}">約1,327万人</td>
上記の場合は、ソート処理には「1327」という数値が使われます。

また、下記のように数値とは全く関係ない文字列を表示している場合にも使えます。
<td class="{sortValue: 27}">大阪府</td>
上記の場合は「27」という数値がソート対象として使われます。「大阪府」という文字列はただ画面に表示されるだけで、ソート対象のデータとしては使われません。

メタデータを使ってソートするので、意図通りに並ぶ

メタデータを使ってソートするので、意図通りに並ぶ

このように、ソート処理専用のメタデータをHTML側に加えておけば、どんな文字列が表示される場合でも意図通りにソートさせられます。

メタデータをソート処理に使用するには、以下のように追記する必要があります。


 

Tablesorterでのソート処理にメタデータを利用する場合の書き方

メタデータを使ってソートできるようにするには、head要素内に以下の1行を追加して、「jquery.metadata.js」スクリプトを読み込みます。
<script src="./jquery.metadata.js" type="text/javascript"></script>
その上で、対象の表(table要素)を以下のように記述します。基本的な記述方法は前ページのソースと同じですが、ソート処理にメタデータを使いたい列のヘッダ(th要素)にだけ、class属性を使って「{sorter:'metadata'}」という記述を加える必要があります。
<table id="sampleTable" class="tablesorter">

   <thead>
      <tr>
         <th class="{sorter:'metadata'}">都道府県名</th>
         <th>読み</th>
         <th class="{sorter:'metadata'}">総人口</th>
         <th class="{sorter:'metadata'}">面積</th>
         <th class="{sorter:'metadata'}">人口密度</th>
      </tr>
   </thead>

   <tbody>
      <tr>
         <td class="{sortValue: '13'}">東京都</td>
         <td>とうきょうと</td>
         <td class="{sortValue: 1327}">約1,327万人</td>
         <td class="{sortValue: 2189}">約2,189km²</td>
         <td class="{sortValue: 6000}">約6,000人/km²</td>
      </tr>
      <tr>
         <td class="{sortValue: '27'}">大阪府</td>
         <td>おおさかふ</td>
         <td class="{sortValue: 886 }">約886万人</td>
         <td class="{sortValue: 1899}">約1,899km²</td>
         <td class="{sortValue: 4700}">約4,700人/km²</td>
      </tr>

      : : :

      <tr>
         <td class="{sortValue: '28'}">兵庫県</td>
         <td>ひょうごけん</td>
         <td class="{sortValue: 556 }">約556万人</td>
         <td class="{sortValue: 8396}">約8,396km²</td>
         <td class="{sortValue: 662 }">約662人/km²</td>
      </tr>
   </tbody>
</table>
文字が含まれていても、意図通りにソートできる

文字が含まれていても、意図通りにソートできる

上記のように記述すると、右図のように「漢字」や「単位付き数値」などが含まれる列であっても意図通りにソートされるようになります。

上記のソースを記述したサンプルページを用意しています。実際にブラウザで動作を確認したり、HTMLソースを表示させて具体的な記述を確認したりしてみて下さい。

Tablesorterを使ってソート可能な表を掲載したサンプルページ2

このTablesorterには、他にも「特定の列はソート対象から外す」機能や、「最初からソートしておく列を指定する」機能、「複数の列を同時に基準にしてソートする」機能など、便利な機能が用意されています。最後に、それらの使用方法をご紹介いたします
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます