前提・実現したいこと
1つ目のテーブルのtdをクリックすると、2つ目のテーブルの同じ位置にあるtd縦一列の背景色を変更させたい。
発生している問題・エラーメッセージ
if文で書いたコードで問題なく動いてはいるのですが、今後列数が増えていくと冗長なif文の繰り返しになってしまうので、これを配列化し最適化したいと考えております。
該当のソースコード
html
1<table id="table"> 2 <tbody> 3 <tr> 4 <td>1</td> 5 <td>2</td> 6 <td>3</td> 7 <td>4</td> 8 <td>5</td> 9 </tr> 10 </tbody> 11</table> 12 13<table id="targetTable"> 14 <tbody> 15 <tr> 16 <td>1</td> 17 <td>2</td> 18 <td>3</td> 19 <td>4</td> 20 <td>5</td> 21 </tr> 22 <tr> 23 <td></td> 24 <td></td> 25 <td></td> 26 <td></td> 27 <td></td> 28 </tr> 29 <tr> 30 <td></td> 31 <td></td> 32 <td></td> 33 <td></td> 34 <td></td> 35 </tr> 36 </tbody> 37</table>
css
1table, 2td, 3th { 4 border: 1px solid #595959; 5 border-collapse: collapse; 6} 7 8td, 9th { 10 padding: 3px; 11 width: 30px; 12 height: 25px; 13} 14 15td.is-selected { 16 background: #caf8da; 17} 18
js
1$(function() { 2 var selected_td = $("#table td"); 3 var target_td = $("#targetTable td"); 4 $(selected_td).on("click", function() { 5 var nthItem = $("#table td").index(this); 6 target_td.removeClass("is-selected"); 7 if (nthItem === 0) { 8 $("#targetTable td:nth-child(1)").addClass("is-selected"); 9 } else if (nthItem === 1) { 10 $("#targetTable td:nth-child(2)").addClass("is-selected"); 11 } else if (nthItem === 2) { 12 $("#targetTable td:nth-child(3)").addClass("is-selected"); 13 } else if (nthItem === 3) { 14 $("#targetTable td:nth-child(4)").addClass("is-selected"); 15 } else if (nthItem === 4) { 16 $("#targetTable td:nth-child(5)").addClass("is-selected"); 17 } 18 }); 19}); 20
サンプル
テーブル二つ
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/11 03:37
2018/05/11 04:12
2018/05/11 04:50 編集
2018/05/11 06:09