- ベストアンサー
JavaScriptでテーブル内のテキストを取得する方法
- HTMLのテーブル内のテキストを、JavaScriptを使って取得する方法を教えてください。
- テーブル内のテキストを見た目のまま(行や改行など)取得する方法について教えてください。
- テーブル内のテキストを取得する際に、HTMLのタグ名などのテキストも含まれないようにする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
回答がないみたいなので… rows[i].innerHTMLで取得すると、行単位でHTMLを取得するので<td>~</td><td>~~のような文字列になってしまいます。 セル単位で内容を取得したいのでしょうから、rows[i].cells[j] を単位として処理をする必要があるのではないでしょうか? また、<td>内にタグがあったりソース上での改行などがあると、innerHTMLだとそのまま取得してしまうので、行区切りの改行と区別がつかなくなる恐れが多分にあります。 文字列化した後でどのように使いたいのか不明なので、よくわかりませんが、勝手に想像して… *セル内での改行やタブは無視する。(両端の空白もトリム) *セル単位、行単位で区切り文字を入れる。 という最低限で考えれば、こんなのではどうでしょうか? (全角空白は半角に) function hoge(tablename){ var sepC = "\t"; //cellのseparator(タブ) var sepR = "\n"; //rowのseparator(改行) var getText = function(node){ var t = node?(node.textContent || node.innerText):""; return t?t.replace(/^ +| +$|\t|\r|\n/g,""):t; } var i, j, row, cel, result = ""; var tbl = document.getElementById(tablename); for(i=0; row=tbl.rows[i++];){ if(i!=1) result += sepR; for(j=0; cel=row.cells[j++];) result += (j!=1?sepC:"") + getText(cel); } return result; } 区切り文字はとりあえず「タブ」と「改行」にしてあります。 ソース内の両端以外の空白の連続はそのまま残していますので、取り除くときは適宜に…
お礼
innerText を使えばいいんですね! 丁寧にソースも書いていただいて、ありがとうございました。