WEB上の表でソートするためのJavaScript

このQ&Aのポイント
  • WEB上の表でソートするためのJavaScriptについて知りたいです。
  • HTMLのソースではTableを用いた表を作成しており、番号、名前、クラス、クラブの項目をWEB上でソートしたいです。
  • 3列でそれぞれソートするのではなく、3つの列を1つの連続した列としてソートしたいです。
回答を見る
  • ベストアンサー

WEB上の表でソートするためのJavaScript

WEB上の表でソートするためのJavaScript 下記のHTMLのソースではTableを用いた表を作成していますが、 番号、名前、クラス、クラブの項目をWEB上でソートできる JavaScriptを教えて欲しいのです。 下記ソースの表では、番号順に並べていますが、名前順や、クラス順、 クラブ順に並べ変えたいのです。 ただ、これが表示は1列ではなくの3列に分けて表示したいのです。 3列でそれぞれソートするのではなく、3つの列を1つの連続した列 としてソートしたいのです。 ですから、ソートを実行するためのボタンは、各列には必要なく、左端の列の 各項目をボタンにできればと思っています。 どうぞよろしくお願い致します。 <table border="3"> <TR> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>1</TD><TD>ヤマダ</TD><TD>A</TD><TD>水泳</TD> </TR> <TR> <TD>2</TD><TD>タナカ</TD><TD>C</TD><TD>野球</TD> </TR> <TR> <TD>3</TD><TD>サトウ</TD><TD>E</TD><TD>水泳</TD> </TR> <TR> <TD>4</TD><TD>スズキ</TD><TD>D</TD><TD>茶道</TD> </TR> </TABLE> </TD> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>5</TD><TD>ワタナベ</TD><TD>B</TD><TD>バレー</TD> </TR> <TR> <TD>6</TD><TD>イトウ</TD><TD>C</TD><TD>水泳</TD> </TR> <TR> <TD>7</TD><TD>キムラ</TD><TD>A</TD><TD>柔道</TD> </TR> <TR> <TD>8</TD><TD>イシダ</TD><TD>B</TD><TD>卓球</TD> </TR> </TABLE> </TD> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>9</TD><TD>ワダ</TD><TD>C</TD><TD>卓球</TD> </TR> <TR> <TD>10</TD><TD>タダ</TD><TD>D</TD><TD>柔道</TD> </TR> <TR> <TD>11</TD><TD>ミキ</TD><TD>E</TD><TD>野球</TD> </TR> <TR> <TD>12</TD><TD>ハナダ</TD><TD>A</TD><TD>水泳</TD> </TR> </TABLE> </TD> </TR> </table>

noname#141201
noname#141201

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.3

ごめんなさい。#2 の書き方は出来ませんでした。 tbody は複数個置けますが、thead, tfoot は一つしか置けません。 11.2.1 TABLE要素 - HTML 4.01 (ja) http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/tables.html#h-11.2.1 4.9 Tabular data — HTML5 (including next generation additions still in development) - HTML5 http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#the-table-element 打開案としては、以下のように。 1. 1つのtable要素を作り、tr要素を float で流し込んで3カラムに 2. ソート実行前にth要素を持つtr要素を removeChild() 3. ソート実行 4. 2. で削除したノードを挿入する <table>  <thead>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>  </thead>  <tbody>   <tr><td>1</td><td>ヤマダ</td><td>a</td><td>水泳</td></tr>   <tr><td>2</td><td>タナカ</td><td>c</td><td>野球</td></tr>   <tr><td>3</td><td>サトウ</td><td>e</td><td>水泳</td></tr>   <tr><td>4</td><td>スズキ</td><td>d</td><td>茶道</td></tr>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>   <tr><td>5</td><td>ワタナベ</td><td>b</td><td>バレー</td></tr>   <tr><td>6</td><td>イトウ</td><td>c</td><td>水泳</td></tr>   <tr><td>7</td><td>キムラ</td><td>a</td><td>柔道</td></tr>   <tr><td>8</td><td>イシダ</td><td>b</td><td>卓球</td></tr>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>   <tr><td>9</td><td>ワダ</td><td>c</td><td>卓球</td></tr>   <tr><td>10</td><td>タダ</td><td>d</td><td>柔道</td></tr>   <tr><td>11</td><td>ミキ</td><td>e</td><td>野球</td></tr>   <tr><td>12</td><td>ハナダ</td><td>a</td><td>水泳</td></tr>  </tbody> </table>

noname#141201
質問者

補足

ありがとうございます。ただ、知識不足なので、 丸投げ状態なので、打開案を試みようにも意味もわからず 何一つ実現できない状態です。。 この表を3カラムにする方法すらわからないです。。 すいません。

その他の回答 (2)

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

table要素の子に thead, tbody をぞれぞれ3つ用意してみてはどうでしょう? table要素が一つになりますし、float: left; thead, tbody を流し込めば期待通りのデザインを実現できると思います。 (※以下、全角空白は半角空白に置換してください) <table>  <thead>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>  </thead>  <tbody>   <tr><td>1</td><td>ヤマダ</td><td>a</td><td>水泳</td></tr>   <tr><td>2</td><td>タナカ</td><td>c</td><td>野球</td></tr>   <tr><td>3</td><td>サトウ</td><td>e</td><td>水泳</td></tr>   <tr><td>4</td><td>スズキ</td><td>d</td><td>茶道</td></tr>  </tbody>  <thead>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>  </thead>  <tbody>   <tr><td>5</td><td>ワタナベ</td><td>b</td><td>バレー</td></tr>   <tr><td>6</td><td>イトウ</td><td>c</td><td>水泳</td></tr>   <tr><td>7</td><td>キムラ</td><td>a</td><td>柔道</td></tr>   <tr><td>8</td><td>イシダ</td><td>b</td><td>卓球</td></tr>  </tbody>  <thead>   <tr><th>番号</th><th>名前</th><th>クラス</th><th>クラブ</th></tr>  </thead>  <tbody>   <tr><td>9</td><td>ワダ</td><td>c</td><td>卓球</td></tr>   <tr><td>10</td><td>タダ</td><td>d</td><td>柔道</td></tr>   <tr><td>11</td><td>ミキ</td><td>e</td><td>野球</td></tr>   <tr><td>12</td><td>ハナダ</td><td>a</td><td>水泳</td></tr>  </tbody> </table>

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

自作のアドバイスは、他の回答者にまかせるとして、 手っ取り早くライブラリーを利用しては、 「TableKit」 http://millstream.com.au/upload/code/tablekit/index.html

関連するQ&A

  • tableソート

    新着順になっているテーブルをjqueryで名前ごとにまとめることはできますか? スレ   名前   日時 ああ    ここ   2014/1/31 いい    たた   2014/1/20 ああ    ここ   2014/1/10 ああ    ここ   2014/1/01 こんな感じにしたいです ああ    ここ   2014/1/31 └     ここ   2014/1/10 └     ここ   2014/1/01 いい    たた   2014/1/20 html <table width="100%"> <tr> <th>スレ</th> <th>なまえ</th> <th>新着日時</th> </tr> <tbody> <tr><td>ああ</td><td>test1</td><td>2014/01/31</td></tr> <tr><td>いい</td><td>test2</td><td>2014/01/20</td></tr> <tr><td>ああ</td><td>test3</td><td>2014/01/10</td></tr> <tr><td>ああ</td><td>test4</td><td>2014/01/01</td></tr> </tbody> </table> クリックでのソートはいりません。表示したときにソートするのみで結構です よろしくお願いします

  • JavaScriptによる表のソート機能付与

    avaScriptでソートに関する質問です。jQueryを使って簡潔な記述で実現したいのですが、tablesoterなどのプラグインは使用不可の条件で、Tableのデータを並び替える方法がなかなか見いだせません。例えば、以下のようなTableにソート機能を持たせるにはどのようなJavaScriptの記述が考えられるでしょうか? <thead>の<img>の一方をクリックしたら昇順、もう一方をクリックしたら降順にしたいです。押された場所の項目に応じてそのように並び替えをしたいです。なお、ソートは<tbody>の部分のみでOKです。 <table> <thead> <tr> <th>年月<img src="01.gif"> <img src="02.gif"></th> <th>更新数<img src="01.gif"> <img src="02.gif"></th> <th>聴取率<img src="01.gif"> <img src="02.gif"></th> <th>平均金額<img src="01.gif"> <img src="02.gif"></th> <th>滞在時間<img src="01.gif"> <img src="02.gif"></th> </tr> </thead> <tbody> <tr> <td>2010年08月</td> <td>0</td> <td>22%</td> <td>30円</td> <td>0</td> </tr> <tr> <td>2010年07月</td> <td>2</td> <td>100.00%</td> <td>180円</td> <td>27日 +05:17</td> </tr> <tr> <td>2010年09月</td> <td>2</td> <td>100.00%</td> <td>190円</td> <td>27日 +05:17</td> </tr> </tbody> <tfoot> <tr> <td>合計</td> <td >2</td> <td>21.25%</td> <td>400円</td> <td>57日 +12:10</td> </tr> </tfoot> </table> 以上です。HTMLをいじるのはありです。 どうかよろしくお願い致します。

  • HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。

    HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。 下のソースで50と130のとこをきちんとエクセルのように枠線揃えたいのですが、 どのようにしたら良いのでしょうか? よろしくお願いします。 <HTML> <BODY> <TABLE border=1><TR> <TH width="50"></TH> <TH width="135"></TH> <TH width="65"></th> <TH width="65"></th> <TH width="65"></th> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50 rowSpan=2>50</TD> <TD width=135 rowSpan=2>135</TD> <TD width=65 rowSpan=2>65</TD> <TD width=130 colSpan=2>130</TD> </TR><TR> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=50>50</TD> <TD width=135>135</TD> <TD width=65>65</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=250 colSpan=3>250</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=250>250</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • HTML
  • フルCSSプロフェッショナルテンプレの表作成

    ビルダー15に同梱のフルCSSプロフェッショナルテンプレートで、まったく別の色の表を作成したいのですが、フルCSSのせいで、背景色が反映されません。 1、まったく別の表のためのCSSはどのように書けばいいのでしょうか? 2、それをどのように記述すればよいでしょうか? 3、または、フルCSS”表のデザイン”で選んだ表は、文字が小さく嫌なので、文字を大きく表示する方法はあるのでしょうか?(文章ごとにフォントサイズの変更しなきゃだめ?) ↓↓こんな感じで書いてみたのですが・・・。 CSSコード .example table { width: 640px; border: 1px #ff6347 solid; border-collapse: collapse; } .example td { border: 1px dashed; background-color: #ff6347; padding: 0 6px; } .example th { border: 1px dashed; background-color: #9acd32; } HTMLコード <div class="example"> <table> <tr> <th>1-1</th> <th>1-2</th> <th>1-3</th> <th>1-4</th> </tr> <tr> <td>2-1</td> <td>2-2</td> <td>2-3</td> <td>2-4</td> </tr> <tr> <td>3-1</td> <td>3-2</td> <td>3-3</td> <td>3-4</td> </tr> </table> </div>

  • クリックされた罫表セルの行番号、列番号を取得するには

    クリックされた罫表セルの行番号、列番号を取得する事は出来るのでしょうか。 例えば 下記Tableの"き"という文字が入ったセルをクリックすると 列番号:2 行番号:3 という番号を取得したいのです。 <table> <thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead> <tbody> <tr td>あ</td><td>い</td><td>う</td><td>え</td></tr> <tr><td>お</td><td>か</td><td>き</td><td>く</td></tr> <tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr> <tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr> </tbody> </table> onclickでidのついた所をクリックした時のアクションは取得できましたが、Csvなどからデータを取得したtableのセルをクリックした時の 列数、行数を取得する事は可能でしょうか。 宜しくお願いします。

  • HTML 表の中の表

    趣味でHPを作り始めたのですが表のところがよくわかりません。 大きな表(外枠)の中に2個目の表を作りたいのですが、どうしても2個目の表が大きな表(外枠)の真ん中に来てしまいます。2個目の表が大きな表の一番上にくっつくようにしたいのですがどうしたらいいのでしょうか。宜しくおねがいします。 <html> <body> <table border="1" height="500" width="300"> <tr> <td> <table border="1" width="100%"> <tr > <td colspan="3" > </td> </tr> <tr>   <td colspan="3"> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </table>  </td> </tr> </table> </body> </html>

  • 表のhtmlを入力すると、表の上部に数行~十数行分の余白ができてします。

    ブログを長らくやっていますが、htmlは超初心者です。 「html 表」と検索して、いくつかのhtmlをコピーしてみました。 それを、書いた文章のあとにペーストすると、必ず、文章と表の間に、タイトルに書いたよう、かなりのスペースができてしまします。 たとえば、このようなhtmlをペーストしたのですが… <Table Border> <Tr> <Td> ここに文字やデータを入れこみます。<Br> テーブルタグはこれが基本です。 </Td> </Tr> </Table> または <Table Border> <Tr> <Td>1列1行</Td><Td>2列1行</Td><Td>3列1行</Td> </Tr> <Tr> <Td>1列2行</Td><Td>2列2行</Td><Td>3列2行</Td> </Tr> <Tr> <Td>1列3行</Td><Td>2列3行</Td><Td>3列3行</Td> </Tr> </Table> 本当に初心者のため、もしかしたらとんでもない間違いをしているのかもしれませんが… よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 表の中の列の順番を入れ替える場合の表示方法

    HTMLが不慣れで質問が伝わらないかも知れませんが表の表現についてわかる方は教えてください。 例えば、ある表が存在する場合にB列とD列を入れ替えると中身の文字列もそれにしたがって列が入れ替わる表示方法について教えてください。 実際のサンプルHTMLだとこんな感じです↓ <html> <table border="1"> <tr> <th>A</th><th>B</th><th>C</th><th>D</th><th>E</th> </tr> </thead> <tr> <td>AAAAAAA</td> <td>BBBBBBB</td> <td>CCCCCCC</td> <td>DDDDDDD</td> <td>EEEEEEE</td> </tr> <tr> <td>A'A'A'A'A'</td> <td>B'B'B'B'B'</td> <td>C'C'C'C'C'</td> <td>D'D'D'D'D'</td> <td>E'E'E'E'E'</td> </tr> </table> </body> </html>

  • 表を横に並べる

    メモ帳でHP作っています。 表が縦に長くなったので 2つに分割して横に並べたいのです。 で分割出来て横にも並べたのですが 全体的に小さくなってしまい、 少しでも数字を変えると高さが合わなくなって しまいます。 表は上で高さを合わせたいです。 どうすればいいのでしょうか?。 <table border="0" width="600"> <tr> <td Width="250"> <table border cellpadding="1"> <tr> <td VALIGN="middle" width="100"> あいうえお</td> <td VALIGN="middle" width="260"> かきくけこ</td> </tr> </table> </td> <td width="250"> <table border cellpadding="1"> <tr> <td VALIGN="middle" width="100"> さしすせす</td> <td VALIGN="middle" width="260"> なにぬねの</td> </tr> </table> </td> </tr> </table>

  • HTMLのテーブルについて

    HTMLのテーブルについて 今、HTMLを勉強しています。下記のようにテーブルを作成し一部にセルの結合を行ったところ、(2)の結合したセル右端から外枠までが広がってしまいます。せっかく綺麗に見えるように上の表と下の表のセル幅を合わせても、上の表の右端が出っ張ってしまって意味がありません。 これを解決するにはどのように改善すればいいのでしょうか? <html> <head> <title>A</title> </head> <body> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>1</td> <td>A君</td> <td>(1)</td> </tr> <tr> <td>1</td> <td>B君</td> <td rowspan="2">(2)</td> </tr> <tr> <td>1</td> <td>C君</td> <td></td> </tr> </table> <br> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>2</td> <td>D君</td> <td>(3)</td> </tr> <tr> <td>2</td> <td>E君</td> <td>(4)</td> </tr> <tr> <td>2</td> <td>F君</td> <td>(5)</td> </tr> </table> </body> </html>

専門家に質問してみよう