- ベストアンサー
HTMLでテーブルの並び替え
- HTMLでテーブルの並び替えについての質問です。テーブルの項目名をクリックすることで、対象列を昇順または降順に並び替えたいと思っています。
- テーブルの並び替え方法についていくつか試してみましたが、目的の結果が得られません。お知恵をお借りできないでしょうか?
- 以下のリンクにある方法(http://jsajax.com/Articles/jQueryTableSorter/1120)を試してみましたが、テキストフィールドの並び替えはname属性を基準に行われます。変動値での並び替えが必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご提示のサイトで使用しているものの配布元はここ(↓)だと思いますが、マルチキーでのソートもできるみたいでなかなかよくできている感じですね。 http://tablesorter.com/docs/index.html その機能を利用した方が簡単だと思いますので、それを使えるように考え方を変えるのではいけませんか? (さすがに、inputタグの中まで参照してくれるようなライブラリは探したところで無いと思いますので) <考え方1> ご提示のテーブルに非表示の列などを追加しておいて、入力値はそのままその列のセルの値として反映させる。 inputの列をキーにソートする場合は、キーをこの非表示の列に置き換えてソートさせる。 <考え方2> 考え方1と似ていますが、テーブルの表示は全てテキストにしておいて、ユーザ入力をしたい列ではセルをクリックしたらinput要素を生成して入力を受付けるというUIに変更する。(入力終了時に、入力値をセルの値としてinput要素は削除する) こちらの方法だと、キーの置き換えなどもしなくて済むので、tablesorterとのやり取りなどはほとんど考えなくても済みそうですね。 <考え方3> formの送信を行なっているのかいないのか不明ですが、考え方2だと送信してもinput要素がないので送信されなくなってしまいます。 それなので、考え方1の表示/非表示を逆転しておいて、入力のUIには考え方2を用いるという方法。(input要素が非表示) 多分、HTMLソースの出力もphpなどから行なっているのではないかと推測しますが、この方法なら出力時に『inputタグを出力したらそのセルは非表示にしておいて、(例えば)次の列にセルを追加して、同じ値をそのまま表示』にする程度の変更でよさそう。 サーバー側の処理などHTML以外の仕組みがどのようになっているかによって手間が変わってくると思いますが、全体像がよくわかりませんので、実際にどのような方法が一番良いのかは適宜ご判断ください。 ご参考になれば…
その他の回答 (2)
- yyr446
- ベストアンサー率65% (870/1330)
prototype.jsベースですが、このライブラリー「Tablekit」使えば、ご希望の事が出来そうな気がします。 http://millstream.com.au/view/code/tablekit/ http://millstream.com.au/upload/code/tablekit/index.html これのEditableとかsortableを使えそう、PHPも必要ですが..
補足
回答ありがとうございます。 「Tablekit」も「TableSorter」と同じ動きである事を確認しております。 記述自体は「TableSorter」の方が容易です。 Editableを指定したときの画面は一見フォームのようですがフォームのようには扱うことが出来ないようです。
- nitto3
- ベストアンサー率21% (2656/12205)
面倒ですが、容量もアップしますが、 並べ替えたものをそれぞれアップしてそこにリンクさせたらいいでしょう。
補足
回答ありがとうございます。 項目Cのvalueはその時々の条件で変動する為、予めデータを取る事が出来ません。
お礼
回答ありがとうございます。 回答2を参考にしてテーブルの内容をすべてセルの値としました。 よくよく考えたら変更値の表示のためにテキストフィールドを使用していましたが <td id="test">10</td>として、「document.getElementById("test").innerHTML」でセルの読込書込を行い、並び替えは従来のテーブルのソートを行うことで導きたい答えを出すことが出来ました。 この度は質問自体が分かり難くご面倒をお掛けしました。