htmlで書かれたテーブルをドラッグして選択状態にした後、Ctrl+Cをして、
メモ帳に貼り付けると、テーブルの見た目のままテキストだけが取得できますよね?
これと同じように、あるボタンをクリックしたときに、テーブル内のテキストを見た目とおなじように
(行や改行など)取得したいのですが、
javascriptでやる方法はないでしょうか?
なお、以下のようにすると、テキストのみではなく、
テーブル内に含まれるhtmlのタグ名などのテキストも全て取得してしまいます。
テーブル名 tablename
var ans = "";
var Tbl=document.getElementById(tablename);
for(var i=0;i< Tbl.rows.length;i++){
ans=Tbl.rows[i].innerHTML+"\n";
}
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;
}
区切り文字はとりあえず「タブ」と「改行」にしてあります。
ソース内の両端以外の空白の連続はそのまま残していますので、取り除くときは適宜に…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PostgreSQL 投稿記事と関連付けているテーブルがわからない 1 2022/04/27 20:29
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで決まった「時刻」...
-
google apps scriptの終了のさせ方
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
VSCODE[Python]の設定について
-
1日1回だけ引けるjavascriptお...
-
jqGridについて
-
イラストレーターでドキュメン...
-
シンプルなweb版スタンプラリー...
-
C# 演算 分岐処理 繰り返し処理
-
ページの先頭へスクロールして...
-
ジェネレーターの作り方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
C# 演算 奇数と偶数 表現の仕方
-
【javascript】正規表現で括弧...
-
なぜmatchメソッドがエラーにな...
-
Javascriptで、以下の様な足し...
-
カンマで終わってるのはセミコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
HTMLで作った時報アプリが動き...
-
javascriptでテーブルに追加し...
-
html javascript リンク先アド...
-
【西暦等の変換】
-
ローカルにあるファイルを検索...
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
カンマで終わってるのはセミコ...
-
JavaScriptで文字列の特定文字...
-
javascriptでiframeのURL変更は?
-
APIを使って埋め込んだグーグル...
おすすめ情報