• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブル内のテキストを取得したい)

JavaScriptでテーブル内のテキストを取得する方法

このQ&Aのポイント
  • HTMLのテーブル内のテキストを、JavaScriptを使って取得する方法を教えてください。
  • テーブル内のテキストを見た目のまま(行や改行など)取得する方法について教えてください。
  • テーブル内のテキストを取得する際に、HTMLのタグ名などのテキストも含まれないようにする方法を教えてください。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.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; } 区切り文字はとりあえず「タブ」と「改行」にしてあります。 ソース内の両端以外の空白の連続はそのまま残していますので、取り除くときは適宜に…

HAWAI777
質問者

お礼

innerText を使えばいいんですね! 丁寧にソースも書いていただいて、ありがとうございました。

関連するQ&A

専門家に質問してみよう