HTMLテーブルソートJavaScriptライブラリ

HTMLテーブルをJavaScriptでソートするAjaxライブラリを作成。

本ソートスクリプトの特徴としては和暦(明治~平成まで)や月日に2桁と1桁のものが混じっていてもソートしてくれます。また数字の書式も様々なものをサポートしています。ついでにCSS/スタイルシートはそのままに、マウスオーバー時の背景色変更もしてくれます。

元のCSSレイアウトを変更すること無しに、手軽にテーブルをソートさせたい場合にどうぞ。

特徴

  • tableタグ以外にはidやclassの指定が不要
  • idやclassのスタイルを変更しません。
  • マウスポインタが上にある行の背景色も自動的に計算
  • 日付や数値に書式が設定されていてもソート可能(サポート書式はdemoの通り)
  • thead有り/無し両対応
  • thead有りの場合は、theadの最終行が項目行として選択されます。
  • このjs以外の外部ファイルは不要
  • 特定のフレームワークに依存しません

デモ

書式1 書式2 書式3 書式4 書式5
1991/1/13 1991年1月13日 平成3年1月13日 H3.1.13 1月13日
1921/12/13 1921年12月13日 大正10年12月13日 T10.12.13 12月13日
2003/9/3 2003年9月3日 平成15年9月3日 H15.9.3 9月3日
1975/11/3 1975年11月3日 昭和50年11月3日 S50.11.3 11月3日
1978/10/4 1978年10月4日 昭和53年10月4日 S53.10.4 10月4日
2005/7/20 2005年7月20日 平成17年7月20日 H17.7.20 7月20日
1960/6/30 1960年6月30日 昭和35年6月30日 S35.6.30 6月30日
2004/12/31 2004年12月31日 平成16年12月31日 H16.12.31 12月31日

他のデモを見たい方は以下

ダウンロード

使い方

1.headタグでJavaScriptファイルを読み込みます。(ダウンロードしたjsファイルのバージョンを消してsorter.jsという名称で使用しているものとします。)

<script type="text/javascript" src="sorter.js" charset="utf-8"></script>

2.tableタグにidを設定します。(例ではsampleというidを設定)

<table id="sample">

3.tableの後に以下のjavascriptを記述します。

<script type="text/javascript">
var sample=new table.sorter("sample");
sample.init();
</script>

コンストラクタに与える文字列、インスタンス名などの計3箇所をid名で統一してください

メソッド仕様

  • sorter(id, asc, desc)
    • id: 文字列です。tableタグのidを渡します(必須)
    • asc: 文字列です。昇順時に表示するhtml、タグも使用できます。
    • desc: 文字列です。降順時に表示するhtml、タグも使用できます。
  • init(…)

    可変引数です。

    • ソートしない列を指定します。可変です。init(0,1,2)のように引き渡します。

WordPressでの使い方

add-css-jsプラグインを利用したWordPressでの組み込み方は以下のキャプチャを参考にしてください。ざっくり説明すると、jsファイルをjsfileカスタムフィールドで読み込み、printmetaショートコードでソートライブラリを動作させています。

add-css-js設定

ソートさせたいテーブルのid属性がdemo_no_theadの場合、カスタムフィールドの名前をtablesortにして以下のコードを値として入力します。

<script type="text/javascript">
var demo_no_thead=new table.sorter("demo_no_thead");
demo_no_thead.init();
</script>

本文のtableタグの終わりに以下のショートコードを加えます。

[printmeta name="tablesort"]

現存する問題点

  • SafariやChromeなどのWebKitを使用するブラウザでは1列目を連続してソート出来ない問題があります。(2列目をソートすると元に戻る)
  • addEventListenerやattachEventを使いonload時に動作させようとしたのですが、うまく動作しませんでした。(解決策求む)

ライセンス

いかなる制限も設けません。(商用も無料)

ただバグ報告や改良したらソースをもらえるor配布URLを教えて貰えるとうれしいです。

改定履歴

  • 2009/09/02 v0.2.1->v0.2.2に変更
    parseIntの引数を修正

最後に

ふっくんのブログっぽいサイトから記事を移行すると共にVerUPしました。

最後に元ネタとなったJavaScript Table Sorterの作者様に感謝。

ページトップ

ブックマーク!


9件のコメント

  1. よし
    コメント日時 2009 年 8 月 26 日 at 3:44 PM

    お世話になります。
    sorter.js を使わせていただいてるのですが、下記のソースのような場合、上手くソートされません(泣)。
    何か設定方法とかあるのでしょうか?
    よろしくお願いいたします。

    table#sort {
    border-left:#AAAAAA 1px solid;
    border-top:#AAAAAA 1px solid;
    font-size:90%;
    border-collapse:collapse;
    }

    table#sort tr th,
    table#sort tr td {
    border-right:#AAAAAA 1px solid;
    border-bottom:#AAAAAA 1px solid;
    padding:4px 8px;
    background-color:#ffffff;
    color:#545454;
    }

    table#sort tr th {
    background-color:#CCCCD5;
    color:#333333;
    }

    日付1
    日付2

    2009/08/17
    2009/08/19

    2009/08/11
    2009/08/19

    2009/08/03

    2009/07/23

    //テーブルソート用
    var sort = new table.sorter(’sort’);
    sort.init();

  2. torisan
    コメント日時 2009 年 8 月 28 日 at 2:30 PM

    申し訳ありませんが、テーブルのHTMLソースをメールか何かで送っていただけると助かります。

  3. torisan
    コメント日時 2009 年 9 月 2 日 at 11:46 PM

    08が00と認識されるバグがあったようです。v0.2.2で修正しました。

  4. よし
    コメント日時 2009 年 9 月 3 日 at 9:34 AM

    送っていただいた新バージョンで、無事に動きました。
    ご丁寧な対応、ありがとうございました。

  5. hi-fix
    コメント日時 2009 年 9 月 18 日 at 8:08 PM

    お世話になります。
    何種類かテーブルソートのJavaScriptを参考にさせていただいたのですが、
    とりさんのソフト屋さんのライブラリがとても導入が簡単で使い易かったので使わせていただいております。

    ソート順番で1点、日時の情報のソート時に期待した順番のとおりにソートされないようです。

    テーブルのデータに、年月日時分秒が含まれる
    2009/05/21 2:13:41 や
    2009/05/21 12:4:16 等、
    時分の表記に 2桁、1桁が混在するとソート時に
    0:00⇒10:00⇒11:00・・・1:00⇒2:00・・・9:00 のような昇順、または降順になるようです。

    日時のソートで 0時から24時までの昇順は出来ないでしょうか?
    よろしくお願い致します。

  6. torisan
    コメント日時 2009 年 9 月 21 日 at 11:03 AM

    ちと見てみます。
    ただ、現在、他の仕事で手が離せないので、しばらくお待ちください(汗

  7. S
    コメント日時 2010 年 7 月 14 日 at 3:09 AM

    お世話になっています。

    ここで紹介されているテーブルソートスクリプトを
    私の持っているデータ(400~600行程度)で利用してみました。
    他のサイトで紹介されているスクリプトに比べて
    さくさくと動き、非常に優れたものだと思っています。
    (javascriptのことは全くの初心者ですが。。。すみません。)

    私のホームページで利用させていただこうと思いますが
    >SafariやChromeなどのWebKitを使用するブラウザでは1列目を連続してソート出来ない問題があります。(2列目をソートすると元に戻る)

    このあたり、修正される予定はありますでしょうか?
    宜しくお願いします。

  8. torisan
    コメント日時 2010 年 7 月 14 日 at 10:07 PM

    今のところ修正する予定はありません。おそらくしてもかなり後になるだろうと思います。

    申し訳ありませんがよろしくお願いします。

  9. S
    コメント日時 2010 年 7 月 15 日 at 2:00 AM

    了解しました。
    何かしら対策を考えて見ます。
    お返事ありがとうございました。

    ちなみに私も高校まで福井市に住んでいました。
    応援しています。

コメント投稿

* は必須項目です。入力したメールアドレスは公開されません。

*
*



AccessやExcel、.NETソフトウェア開発、WordPress等を使用したWebのシステム化、PCサポート、コンサルなどを行っています。全国対応可能です。お問い合わせください。
TEL (0776)56-8539