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

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

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

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

Q&A

解決済

1回答

598閲覧

jQuery クリックした行を配列化したい

cafeore_nmti

総合スコア28

jQuery

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

0グッド

0クリップ

投稿2018/12/10 05:54

列1列2列3
AAAAAA
BBBBBB
CCCCCC

上のような表があるとして、例えば2列目をクリックすると、2列目のデータをすべて格納した配列にしたいです。
ロジックの流れは大まかに以下だと考えました。
0. 列数取得
0. クリックした行から列数分だけセルの値を取得
0. 取得した値を配列に格納

列数はとりあえず以下の方法で取得できました。ですがそこから先について、数十分調べて解決しなかったため、質問させていただきました。

JavaScript

1$('#table').on("click", "tr", function(event){ 2 3 //列数取得 4 var columnNum = $('#table')[0].rows[0].cells.length; 5 6 //ここからのコーディング例が知りたいです。 7 8});

知りたいことは、

  • 列数分だけセルの値を取得し、配列に格納する方法
  • (できれば)列数の取得について、選択行の列数を取得する方法

をご教示願いたいです。よろしくお願いいたします。

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

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

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

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

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

yambejp

2018/12/10 06:09

列とは縦軸のことだと思いますが間違いないですか?それとも行?またcolspanやrowspanはされていない前提でOKでしょうか?
cafeore_nmti

2018/12/10 06:16

コメントいただきありがとうございます。縦軸で間違いないです。また、今回は列や行の結合は無しで構いません。よろしくお願いいたします。
guest

回答1

0

ベストアンサー

javascript

1<script> 2$(function(){ 3 $('#t1 th,#t1 td').on('click',function(){ 4 var idx=$(this).closest('tr').find('th,td').index(this); 5 var arr=$('#t1 tr').map(function(x){ 6 return $(this).find('th,td').filter(':eq('+idx+')').text(); 7 }).get(); 8 console.log(arr); 9 }); 10}); 11</script> 12<table id="t1" border> 13<thead> 14<tr><th>1</th><th>2</th><th>3</th></tr> 15</thead> 16<tbody> 17<tr><td>A</td><td>AA</td><td>AAA</td></tr> 18<tr><td>B</td><td>BB</td><td>BBB</td></tr> 19<tr><td>C</td><td>CC</td><td>CCC</td></tr> 20</tbody> 21</table>

javascript

1<script> 2$(function(){ 3 $('#t1 th,#t1 td').on('click',function(){ 4 var arr=$(this).closest('tr').find('th,td').map(function(){ 5 return $(this).text(); 6 }).get(); 7 console.log(arr); 8 }); 9}); 10</script> 11<table id="t1" border> 12<thead> 13<tr><th>1</th><th>2</th><th>3</th></tr> 14</thead> 15<tbody> 16<tr><td>A</td><td>AA</td><td>AAA</td></tr> 17<tr><td>B</td><td>BB</td><td>BBB</td></tr> 18<tr><td>C</td><td>CC</td><td>CCC</td></tr> 19</tbody> 20</table>

投稿2018/12/10 06:39

編集2018/12/10 06:50
yambejp

総合スコア114829

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

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

cafeore_nmti

2018/12/10 06:47

すみません、こちらの勘違いで補足が異なりました。 配列化したいのは列ではなく"行"でした。
yambejp

2018/12/10 06:51

行はもっと簡単、追記しておきました
cafeore_nmti

2018/12/10 06:54

ありがとうございます。参考にさせていただきます。
cafeore_nmti

2018/12/10 07:33

いただいたコードを大体理解し、思った通りに実装できました。ありがとうございます。 実装時、「後からボタンで追加した行をクリックするとイベントが発生しない」事象に遭いましたが、下記記事にて無事解決しました。 ありがとうございました。 https://qiita.com/shizuma/items/d561f37f864c3ebb5096
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問