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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1186閲覧

JQUERYテーブル appendで行追加すると2行縦表示したいが横並びになる

garou

総合スコア9

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/07/08 06:37

編集2021/08/16 01:52

前提・実現したいこと

こんにちは。
javascriptでJQUERYのテーブルを実装しました。テーブル自体は出来ましたが、cloneした行をappendすると、1行目と2行目を縦並びすることを期待しましたが、1行目に横並びで表示しました。

JQUERYは初めて使用しましたが、不明点が多いです。解決策がありましたら教えて下さい。

発生している問題・エラーメッセージ

下記データを1行で表示している事が問題です。
1行目のデータは100 01~02 300
2行目のデータは200 03~04 400

状況の追記4

JSはanimalArea.js、jquery-3.6.0.min.js
JSフォルダと同じ階層に、main.html
※htmlは削除しました。
ブラウザはchromeまたはedgeです。
【手順】
htmlをダブルクリックして起動しますと、5行表示を再現します。
main.html
animalArea.js
※isは該当コード行のみに修正します。
本jsに5行表示するコードがあります。addEventListenerをコメントアウトすると、readyメソッドで初期表示の2行表示します。

javascript

1$(document).ready(function() { 2 $('#animalCntrlArea-tbody>tr') 3 .clone(true) 4 .insertAfter($('#animalCntrlArea-tbody>tr')); 5 6 $(document).on('change', '.changeList', function() { 7 $(this) 8 .parent() 9 .next() 10 .html($(this).val()); 11 }); 12}); 13 14window.addEventListener('DOMContentLoaded', function() { 15 16 // 問題のコードです 17 let t=$('#animalCntrlArea-tbody>tr'); 18 let tr0=t.eq(0).clone(true); 19 t.parent().append(tr0); 20 21}, false); 22

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

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

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

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

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

guest

回答2

0

F12 で 生成された構造を確認してください。
<tr/><tr/> を追加していませんか?
追加するならその親の <tbody/> に追加してください。

<tr/> の あとに <tr/> を追加したいのであれば .append() ではなく、 .after() を使用してください。

投稿2021/07/08 06:55

juner

総合スコア534

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

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

garou

2021/07/08 08:33

juner様 ご回答ありがとうございました。 コードを修正して実行しますと、2行表示しましたが、2行目はtable配下にtrを追加しました。 原因は分かりませんが、2番目の子の行はtable配下に追加していました。 出来ればtbody配下にtr(2番目の子の行)に追加したいのですが、どのように修正するべきかご教示頂きたいです。
juner

2021/07/08 08:40

`t.eq(0).after(t.eq(0).clone(true))` みたいな感じに `clone()`元の後に追加ではだめだったのですか?
garou

2021/07/08 09:16 編集

juner様 ご回答ありがとうございました。 ご教示頂いた内容を元に、コードを変えて試してみました。 [結果] ダメでした。修正方方法に問題があるような気がします。 全てtbody配下にtrを5行追加しました。 「状況の追記2」に試したコードを記載しました。 juner様がイメージしたコードとなっているかをご確認いただきたいです。 なぜ、子要素trタグを5行追加するのかが分かりません。 デバッグ画面を見ますと、tbody配下は<tr></tr>が6個あります。
garou

2021/07/09 00:52

juner様 問題は解決しました。 最初から問題コード(html、js)を再現できる形で投稿するべきでした。 お手間をお掛けして申し訳ございません。 この度は本当にありがとうございました。
guest

0

ベストアンサー

trではなくtable(tbody)に追加する必要があるのでは。

js

1t.parent().append(tr0);

【.parent() | jQuery API Documentation】
https://api.jquery.com/category/ajax/

投稿2021/07/08 06:55

kei344

総合スコア69606

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

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

garou

2021/07/08 08:30

kei344様 ご回答ありがとうございました。 コードを修正して実行しますと、tbody配下にtrを5行表示していました。 「状況の追記」に画面表示のイメージファイルを張り付けました。 原因は分かりませんが、tbody配下にtrを5行追加しています。親の行以外で子の行を5行追加です。出来れば子の行を2行にしたいのですが、どのように修正するべきかご教示頂きたいです。
kei344

2021/07/08 09:32

状況がわからないので、#animal_room-tbodyを含むテーブルのHTMLを質問文に追記してみてください。
garou

2021/07/08 10:14

kei344様 ご回答ありがとうございました。 状況の追記3にてhtmlを追加しました。 お手数おかけしますが、ご確認よろしくお願い致します。 まだ、5行表示の問題が再現致します。
kei344

2021/07/08 11:53

https://jsfiddle.net/p8v2ejny/ > 5行表示の問題 こちらの提示した回答で再現しませんでした。 同じスクリプトを複数読み込んでいたりしませんか?(ループの中など)
garou

2021/07/08 15:23 編集

kei344様 ご回答ありがとうございました。 状況の追記4に再現するコードを記載しました。 質問欄で文字数制限にかかりましたので、コードを削除して記載しました。 テーブルは2つありますが、同じ仕組み(jquery)で動かす予定です。 問題のテーブルはanimalCntrlArea-tableです。 記載したコードで動作確認した結果、再現しました。 申し訳ございませんが、今一度、動作をご確認願います。 同じスクリプトを複数読込む処理はございません。
kei344

2021/07/08 15:23

$('#animalCntrlArea-tbody>tr') .clone(true) .insertAfter($('#animalCntrlArea-tbody>tr')); (中略) let t=$('#animalCntrlArea-tbody>tr'); let tr0=t.eq(0).clone(true); t.parent().append(tr0); 2回処理していますが・・・。
garou

2021/07/09 00:50

kei344様 ご回答ありがとうございました。 >2回処理していますが・・・。 知識不足で申し訳ございません。 readyメソッドの下記をコメントアウトしました。 $('#animalCntrlArea-tbody>tr') .clone(true) .insertAfter($('#animalCntrlArea-tbody>tr')); また、CSSで親と子の行を表示して2行表示することを確認しました。 意図したデータで表示しました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問