TOP
>
JavaScript
>
table sortingのバグとか直してみた
先日紹介したtable sortingについて、たつをさんよりバグの指摘を受けました。
例えば、 3,10,2 を昇順にしても 2,3,10 にならず、10,2,3 になる。 つまり、「文字列」としてしかソートできない。
中略
ts_resortTable() の中の「var i = 0;」を「var i = 1;」にすれば まともに動くようになるよ。応急処置。
テーブルをソートできるようにするjsライブラリ table sorting をまともに使えるようにする
ほんとですね。動いてないです。
で、ヒントもいただいてるのでソースをながめていると
if (itm.substr(0,4) == "<!--" || itm.length == 0) {
あたりがまともに動かない様子。
if (t.tBodies[0].rows[i].cells[column].tagName == "TH" || t.tBodies[0].rows[i].className == "unsortable" || t.tBodies[0].rows[i].className.indexOf("unsortable") != -1 || itm.length == 0) {
に変更すると製作者の意図どおりに動くのかな。
で読み進めると、日本語の価格には対応してない様子。
107/108行目当たりを
if (itm.match(/^-?\\?(\d+[,\.]?)+円?%?$/)) sortfn = ts_sort_numeric;
if (itm.match(/^-?\\?(\d+[,\.]?)+(\u5186)?%?$/)) sortfn = ts_sort_numeric;
に変更すると『1,000円』とか『\1,500』とかでもちゃんとソートできるようになります。(¥には未対応)
せっかくなので修正したものをsortable_ja.jsとして公開しておきます。
追伸
TBはスパムが多い時間帯はうまく動かないようです。
安いサーバー(チカッパ!)なので。。。
スポンサードリンク
«テーブルをソートできるようにするjsライブラリ-table sorting | メイン | SBMのrel="nofollow"について考えてみる»