【html】tableでの奇数行と偶数行の色分けについて

このQ&Aのポイント
  • tableの奇数行と偶数行の色分け方法として、jQueryを使用してtr要素を取得し、evenクラスを追加する方法が一般的です。
  • しかし、この方法ではrowspanを利用したときにずれが生じる可能性があります。
  • ずれを防ぐためには、CSSを使用してnth-childセレクタを適用し、奇数行と偶数行に異なるスタイルを指定する方法が有効です。
回答を見る
  • ベストアンサー

【html】tableでの奇数行と偶数行の色分けについて

【html】tableでの奇数行と偶数行の色分けについて 【html】tableでの奇数行と偶数行の色分けについて 現在tableの奇数行と偶数行を以下のように色分けしているのですが、 これだとrowspanを利用したとき、画像1のようにずれてしまいます。 $(document).ready(function(){  $("table").each(function(){   jQuery(this).find("tr:even").addClass("even");  }); }); この状態を画像2のようにしたいのですが、どのようにすれば出来るでしょうか? よろしくお願いします。 ※画像小さくてすみません。

  • HTML
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.2

作るとこんな感じでしょうか? 最後のif文で奇数偶数の判断ができますので、どちらでも対応できます。 $(document).ready(function(){ $("table").each(function(){ var finds =[]; var lineno = 0; var rows = 1; var index = jQuery(this).find('tr > :first-child'); for(var i=0;i<index.length;i+=1){ if(!finds[i]){ rows = index[i].rowSpan; if (rows > 1) { for (var row = i; row < (i+rows); row += 1) { finds.push({i:row,type:lineno % 2}); } }else{ finds.push({i:i,type:lineno % 2}); } lineno+= 1; } } jQuery(this).find("tr").each(function(i,e){ if(finds[i].type===0){ //0:偶数,1:奇数 $(e).addClass("even"); } }); }); });

その他の回答 (1)

  • x_lady007
  • ベストアンサー率75% (37/49)
回答No.1

こちらを利用するのが手っ取り早いかと思います。 http://www.yomotsu.net/lab/javascripts/stripedtable

関連するQ&A

  • javascriptで行を追加しながら行の色分け

    jQueryでボタンを押すと行が追加・削除されるようにしています。 var data; jQuery(function(){ jQuery('#add').click(function(){ var len = $("#tbl tbody").children().length; if(len>19){ $("#add").attr("disabled","disabed"); } data = '<tr><td>' + (len+1) + '</td><td><textarea name="clmn' + (len+1) + '" cols="30" rows="10"></textarea></td><td><img src="/images/noimage.gif" alt="img' + (len+1) + '" /></td><td><input type="file" name="image' + (len+1) + '" /></td></tr>'; jQuery('#tbl').append(data); }); jQuery('#del_bottom').click(function(){ if (jQuery('tbody tr').length) { jQuery('tbody tr:last').remove(); } }); }); ここで偶数行と奇数行の色を変化させようと $(document).ready(function(){ $("table").each(function(){ jQuery(this).find("tr:even").addClass("even"); }); $("table").each(function(){ jQuery(this).find("tr:odd").addClass("odd"); }); }); というスクリプトを用意しましたが、 同時に動かそうとしても動きません。 何か方法は無いでしょうか? 初期状態では色分けをされていますが、追加した段階で追加された行には適応されません。 詳しいかた教えていただけるでしょうか?

  • tableのtr要素をドラッグ&ドロップで任意に入れ替え、その順番を取

    tableのtr要素をドラッグ&ドロップで任意に入れ替え、その順番を取りたいです。 jqueryのSortableプラグインを調べ、これならできそうとプログラムを組み、 trの一行ごとならばできました。 やりたいことは、rowspanで連結されている<tr>を2行以上まとめて1つの要素とみなし、 入れ替えたいのですが、 jqueryのSortableでできますでしょうか? <table> <tr><td rowspan="2">一行目</td><td>あいう</td> <tr><td>えお<td></tr> <tr><td rowspan="2">二行目</td><td>かきく</td> <tr><td>けこ<td></tr> </table> <table>を入れ子にすれば実現はできそうですが、 ちょっとCSSの関係もあり、その方法を採用するのは難しい気がしています。

    • ベストアンサー
    • AJAX
  • Jqueryでのテーブル背景色設定について

    お世話になります。 CSSとJavascriptどちらで投稿しようか考えたのですが、Jqueryを使用しているのでこちらに質問させていただきました。 ブラウザはIE8を使用しています。 今回 <table class="list"> <tr><th></th></tr> <tr><td></td></tr> . . . <tr><td></td><tr> </tr> このようなテーブルを作りセルの背景色一行ごとに変えたいと思いJqueryで $(function(){ $('table.list tr:even').addClass("linecolor"); }); というスクリプトを作ったのですが反映されません。 CSSは .linecolor{ background#FFFFC4;} としてます。 原因を探ったのですが、いくつかのサイトを見てもこの書き方で問題ないように思います。 試験的にロジックを替えスクリプトの"tr"を"td"と書き換えるとスタイルが適応され、 <tr> => <tr class="linecolor>"としてもスタイルが適応されませんでした。 このことから個人的な結論としてはIE8では<tr>指定でスタイル等を適応させることができないのではないかと思いました。 本当に<tr>にスタイルを適応させることはできないのでしょうか。 また、Jqueryを用いた対処方法があれば教えていただきたいです。 お手数ですが、アドバイスをお願いいたします。

  • jqueryを使ってtrの中のthとtdの色を入れ替えたいと思っていま

    jqueryを使ってtrの中のthとtdの色を入れ替えたいと思っています。 最近jqueryを導入してCSSをいじっているのですが、うまくいきません。 外部jsファイルで $(function(){ $(".A tr > *").mouseover(function(){ $(this).addClass("over"); }).mouseout(function(){ $(this).removeClass("over"); }); $(".A tr:even").addClass("even"); }); と書いています。 イメージとしてはテーブル中のtrで偶数と奇数で縞々になっているとことをマウスが乗っかるとそのtrに内包するthとtdが同じ色に変わるように設定したいと思っています。 外部CSSでは .over { background-color: #999; color: #FFF; } と設定しています。 これを実行するとするとthとtdが同時に色が変わらず、th上の時はthのみtd上の時はtdのみしか背景色がわりません。 参考となるURLだけでもかまいませんので、ご教授ください。

  • jqueryでテーブル行のマウスアウト時の動作

    jqueryでテーブル行をマウスオーバー、マウスアウトした時に行の背景色が 変更されることを期待して下記のようなサンプルを作成してみました。 マウスアウトした時に背景色が変わるようにサンプルを書いて見ましたが 変わりませんでした。どこが悪いかお分かりになりますでしょうか。 また、下記サンプルでマウスアウトした時に色が変わった行の行番号、及び行のオブジェクトを 取得するにはどう記述すればよろしいでしょうか。 <html> <head> <meta charset="UTF-8" /> <title>属性フィルター</title> <script type="text/javascript" src="../jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(function() { alert("a"); $("table tr").mousout( function() { alert("c"); $(this).css("background-color", "red"); } ); }); </script> </head> <body> <table border="1"> <tr> <td>aiueo</td> </tr> <tr> <td>kakikukeko</td> </tr> <tr> <td>sasisuseso</td> </tr> <tr> <td>tatituteto</td> </tr> </table> </body> </html>

  • テーブルについて教えてください

    テーブルについて教えてください <table border="1"> <tr> <th colspan="3">見出し</th> </tr> <tr> <th>1</th> <td rowspan="3">A</td> <td rowspan="3">B</td> </tr> <tr> <th>2</th> </tr> <tr> <th>3</th> </tr> </table> |---------------------| |------|---------------| |------|            | |------|            | |------|--------------| 絵が少しおかしいかも知れませんが・・・上の絵のような感じのテーブル枠になると思います 下の絵のように上の物の一番下にもう一列、縦割していない物を追加したいのですが、どうすればいいでしょうか? 別に新たにテーブルを作ると切れ目が出来てしまうのでできればそれは避けたいです |---------------------| |------|---------------| |------|            | |------|            | |------|--------------| |---------------------| よろしくお願いします

    • ベストアンサー
    • HTML
  • フォームでテーブルの制御ってできる?

    例えば以下のようなテーブルがあるとします。 <html> <head> </head> <body> <table border> <tr><td rowspan="6">1</td> <td rowspan="3">2</td> <td>3</td></tr> <tr><td>4</td></tr> <tr><td>5</td></tr> <tr><td rowspan="2">6</td> <td>7</td></tr> <tr><td>8</td></tr> <tr><td>9</td><td>10</td></tr> </body> </html> フォームでこのrowspanの数値をいれるだけで このようなテーブルをつくるような手段はありますか? JavaScriptかHTMLでできる方法があれば教えてください。 また、テーブル部分の数値になっているところも テキストエリアで書き込めるようにしたいのですが、可能ですか?

    • ベストアンサー
    • HTML
  • jQueryでテーブル行の表示・非表示

    JavaScript・jQueryでテーブル行(trタグ)の表示・非表示を 切り替えるスクリプトを以下のように作成しましたが うまく動きません。 dispChg()内で 非表示に設定したクラス名(hid)を追加し 全行を非表示にできていますが 次の該当trから 非表示に設定したクラス名(hid)の削除がうまくいかないようです。 JavaScriptの引数からクラス名を引き継げないのでしょうか。 どなたか修正できる方がいらっしゃいましたら 教えてください。 よろしくお願いいたします。 <html> <head> <title>test</title> <style type="text/css"> <!-- .hid { display:none } --> </style> <script src="jquery-1.2.6.pack.js" type="text/javascript"></script> <script type="text/javascript"> <!-- function dispChg(trClass){ /* まず全行を非表示 */ $('tr[class]').addClass('hid'); /* 該当の行を表示 */ $('tr[class*=trClass]').removeClass('hid'); } --> </script> </head> <body bgcolor=#ffffff topmargin="0" leftmargin="0" marginheight="0" marginwidth="0"> <input type="button" value="全部表示" onclick="dispChg('atype btype ctype dtype')"> <input type="button" value="a" onclick="dispChg('atype')"> <input type="button" value="b" onclick="dispChg('btype')"> <input type="button" value="c" onclick="dispChg('ctype')"> <input type="button" value="d" onclick="dispChg('dtype')"> <table border="1"> <tr class="atype"><td>a</td></tr> <tr class="btype"><td>b</td></tr> <tr class="ctype"><td>c</td></tr> <tr class="dtype"><td>d</td></tr> </table> </body> </html>

  • テーブルの背景をマウスオーバーで変える

    お世話になります よろしくお願いします phpMyAdminをみてやってみようと思ったのですが テーブルのセルをマウスオーバーで背景の変更はできないでしょうか? FireFoxだとうまくいくのにIEだとうまくいきません。 IEは未対応と聞いたのですが 実際phpMyAdminでは動いています。 どうやれば一緒のことができるのでしょうか? phpMyAdminからそれっぽいソースは見つけたのですが うまくいきませんでした <style type="text/css"> /* odd table rows 1,3,5,7,... */ table tr.odd th, table tr.odd { background-color: #CCCCCC; } /* even table rows 2,4,6,8,... */ table tr.even th, table tr.even { background-color: #666666; } /* hovered table rows */ table tr.odd:hover, table tr.even:hover, table tr.odd:hover th, table tr.even:hover th, table tr.hover th, table tr.hover { background-color: #FFF000; } --> </style> <body> <table> <tr class="odd"><td>マウスを乗せると背景色が変わる</td><td>マウスを乗せると背景色が変わる</td></tr> <tr class="even"><td>マウスを乗せると背景色が変わる</td><td>マウスを乗せると背景色が変わる</td></tr> </table> 以上よろしくお願いします

    • ベストアンサー
    • HTML
  • テーブル行のクリックでチェックボックスの制御

    テーブル行をクリックしたときにその行にあるチェックボックスのON/OFFを 制御したいと思います。 Jqueryで以下サンプルを作成してみました。該当行をクリックするとチェックボックスが ONになったりOFFになったりするのですがチェックボックス自体をクリックするとうまく チェックがONになりません。恐らくチェックボックスをクリックした時はONになっていて、 同時に行をクリックしたとみなされONになっているチェックボックスをOFFにしているのでは ないかと思われます。 チェックボックスをクリックしてもON/OFFがうまくいくようにするためにはどうすればよろしいでしょうか 【サンプル】 <html> <head> <meta charset="UTF-8" /> <script type="text/javascript" src="../jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(function(){ $("#nameTable tr").click(function() { //alert($(data).find(":checkbox").val()); var chk = $(this).find(":checkbox"); if(chk.prop("checked")) { chk.attr("checked", false); } else { chk.attr("checked", true); } }); }); </script> <title>CSS</title> <style type="text/css"> </style> </head> <body bgcolor="rgba(255,0,0,0.15)"> <table id="nameTable" border="1"> <tr><th>名前</th><th>チェックボックス</th></tr> <tr><td>あいうえお</td><td><input type="checkbox" value="1"></td></tr> <tr><td>かきくけこ</td><td><input type="checkbox" value="2"></td></tr> <tr><td>さしすせそ</td><td><input type="checkbox" value="3"></td></tr> <tr><td>たちつてと</td><td><input type="checkbox" value="4"></td></tr> <tr><td>なにぬねの</td><td><input type="checkbox" value="5"></td></tr> </table> </body> </html>

専門家に質問してみよう