質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

3558閲覧

<html>1つのtableをjavascriptで複数のtableに分裂させたい

turutontanchan

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/12/06 01:17

質問失礼致します。
現在、html内で記述されているtableを、javascriptにより複数に分けようとしているのですが、上手く行きません。
具体的には、

html

1<body> 2 <table style="table-layout: fixed;"> 3 <thead> 4 <tr>~</tr> 5 </thead> 6 7 <tbody> 8 <tr> 9 <td>行1-1</td> 10 <td>行1-2</td> 11 </tr> 12 <tr> 13 <td>行2-1</td> 14 <td>行2-2</td> 15 </tr> 16 </tbody> 17 18 </table> 19</body> 20

というテーブルを、適当な行で以下のように分断させ、2つ以上のテーブルを作ろうとしています。

html

1 <table style="table-layout: fixed;"> 2 <thead> 3 <tr>~</tr> 4 </thead> 5 <tbody> 6 <tr> 7 <td>行1-1</td> 8 <td>行1-2</td> 9 </tr> 10 </tbody> 11 </table> 12 13 <table style="table-layout: fixed;"> 14 <thead> 15 <tr>~</tr> 16 </thead> 17 <tbody> 18 <tr> 19 <td>行2-1</td> 20 <td>行2-2</td> 21 </tr> 22 </tbody> 23 </table>

〇試したこと

適当なtr要素に、innerHTMLでタグを書き加えて(/tbody /table table~thead~tr)無理矢理テーブルタグを一度閉じ、
また新しいテーブルを作成させようとしたのですが、thead以外のタグ(/tbody /tableなど)が全て無かったことにされてしまいました。(エラーは出ないが書き込みが消えている)

なんとか1つのテーブルを複数に分裂させる方法はないでしょうか。
お知恵をお借りできたら幸いです。何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

cloneしてお互いのいらない行を削除すればよいでしょう

sample

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 var t1=document.querySelector('table'); 4 var t2=t1.cloneNode(true); 5 var idx=2; 6 7 [].forEach.call(t1.querySelectorAll('tbody tr'),function(x,y){ 8 if(y>=idx) x.parentNode.removeChild(x); 9 }); 10 [].forEach.call(t2.querySelectorAll('tbody tr'),function(x,y){ 11 if(y<idx) x.parentNode.removeChild(x); 12 }); 13 t1.parentNode.appendChild(t2); 14}); 15</script> 16<table style="table-layout: fixed" border> 17<thead> 18<tr> 19<th>見出し-1</th> 20<th>見出し-2</th> 21</tr> 22</thead> 23<tbody> 24<tr> 25<td>1-1</td> 26<td>1-2</td> 27</tr> 28<tr> 29<td>2-1</td> 30<td>2-2</td> 31</tr> 32<tr> 33<td>3-1</td> 34<td>3-2</td> 35</tr> 36<tr> 37<td>4-1</td> 38<td>4-2</td> 39</tr> 40<tr> 41<td>5-1</td> 42<td>5-2</td> 43</tr> 44</tbody> 45</table>

投稿2018/12/06 01:20

編集2018/12/06 01:28
yambejp

総合スコア114833

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turutontanchan

2018/12/06 02:39

複製して行削除…なるほどです。無理矢理分断することしか考えていませんでした。 回答ありがとうございます。
guest

0

ベストアンサー

適当なtr要素に、innerHTMLでタグを書き加えて(/tbody /table table~thead~tr)無理矢理テーブルタグを一度閉じ、

また新しいテーブルを作成させようとしたのですが

innerHTMLでタグのネスト構造を変えることはできません(<tr></tr>の構造を守れる範囲のHTMLしか反映されません)。

新しくテーブルを作って、appencChildなどで列を移動させる、という形にするのがいいかと思います。

投稿2018/12/06 01:23

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turutontanchan

2018/12/06 02:41

innerHTMLにはそういう制約があるのですね。 ご指摘の通り列移動の方法をとり、無事テーブルを分裂させることが出来ました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問