「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

tableでデータを一覧形式に表示後、サーバー送信時などでtableデータを全件取得したい場合の実装例をご紹介します。

JavaScript:tableの要素を順に取得する方法

サンプルテーブル

列A 列B 列C
A1 B1 C1
A2 B2 C2
A3 B3 C3

サンプルテーブルのHTML

サンプルテーブルの要素を順に取得するJavaScript

※イベントのハンドリングはjQueryで記載してます。

IE11ではrowsプロパティの値が必ず0になってしまうようなので、6,8,10行目を以下の様に変更します。

実行サンプル


補足:応用例と注意点

  1. ヘッダー行や空行をスキップする処理を入れる
     記事中の例では tbody.rows をそのままループしていますが、実際には以下のようなケースを考慮した方が扱いやすくなります。

  • <thead> を含むテーブルでは、ヘッダー行(<th>)を除外したい

  • 空の行(すべてのセルが空文字列)や非表示の行を除外したい

  • colspanrowspan を含む複雑なセル構成を扱いたい

 たとえば、以下のようなチェックを追加できます:

  1. textContentinnerText vs innerHTML の使い分け
     セル内に HTML 要素(たとえば <span>, <a> など)が含まれている場合、

  • innerHTML を使うとその HTML 構造も含めた文字列が得られる

  • textContentinnerText を使うと「見た目上のテキスト部分のみ」が取得できる

 用途に応じて使い分けるとよいでしょう。

  1. パフォーマンス改善のヒント
     大きなテーブルを扱うとき、以下のような工夫がパフォーマンス向上につながります。

  • ループの外で tblTbody.rowstr.cells の長さ(length)を取得してキャッシュする

  • DOM 更新を控える(たとえば、逐次テキストエリアに追記するより、文字列をまとめてから最後に value = … で一括設定する)

  • DocumentFragment を活用して一時的に要素をまとめて操作する

  1. ブラウザ対応・仕様差異への配慮
     記事中で触れられているように、IE11 など一部ブラウザでは rowscells の挙動が期待通りでない場合があります。
     近年では IE の使用率が極めて低くなっているため、対象ユーザーのブラウザ環境に応じて対応可否を判断するとよいでしょう。

  2. JSON 形式で出力したい場合
     取得したテーブルの内容を JSON に整形してサーバーへ送信したいケースもよくあります。その場合には、次のような構造がよく使われます:

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x