[jQuery] tableの内容を取得する
スポンサーリンク
jQueryでtableの内容を取得する方法いろいろ。
全セルを2次元配列化
var data = []; var tr = $("table tr");//全行を取得 for( var i=0,l=tr.length;i<l;i++ ){ var cells = tr.eq(i).children();//1行目から順にth、td問わず列を取得 for( var j=0,m=cells.length;j<m;j++ ){ if( typeof data[i] == "undefined" ) data[i] = []; data[i][j] = cells.eq(j).text();//i行目j列の文字列を取得 } }
テーブル内の全セルを二次元配列にする場合は上記のコードで取得できる。2行目で行を配列化。その配列内のセルを4行目で列ごとにもう一度配列化し、データ保持用の変数data
に代入している。
2行目の$("table tr")
を$("table tbody tr")
とすればtbody内のセルだけを、$("table thead tr")
とすればヘッダーのセルだけを取得できる。
colspanやrowspanでセルが結合されている場合
この場合も前述の全セルのニ次元配列化と同じロジックで取得できる。ただし、セルの番地が単純な順番となっていないのでその点に注意。
こういうインデックスになる。
つまり、ある行のn列目の値を得たいと思った時、その前にrowspanやcolspanで拡張されたセルがある場合、列番がずれているのでそれに対応した処理を行わねばならない。
セルがtdかthかを知りたい
上記の例ではそのセルのタグが<th>
か<td>
か区別していない。
判別したければ内側のfor文内に以下のif文を書く。
if( cells.eq(j).is("th") )//th if( cells.eq(j).is("td") )//td
colspan、rowspanの値を知るには
内側のfor文内でcells.eq(j).attr("colspan")
でcolspanの値を得られる。rowspanならcells.eq(j).attr("rowspan")
。
colspan、rowspanとも設定されていない場合はundefined
となる。
スポンサーリンク
jQueryカテゴリーの投稿
- [jQuery] $.ajaxのコールバック関数にcontextで値を渡す
- [jQuery] 文字列が含まれているかどうかの判定
- [jQuery] rowspanを持つtableで行の表示・非表示を切り替える
- [jQuery] find()とchildren()の使い分け
- jQueryとPHPでAJAX通信を行う
- [jQuery] $('form').change()でフォーム全体の変更を監視する
- [jQuery] 属性が存在するかどうかチェックするコード
- [JS][jQuery] 要素の存在を確認する6通りのコードと実行速度
- [jQuery] clone()で操作対象のエレメントを元の位置に保つ
- [jQuery] index()でクリックされたhtml要素が何番目の要素かを知る