jsに関して全くの素人です。日々手を動かしながら勉強しています。
練習で使った動作確認済みのコードで書き方を理解しようと思い、質問させていただきました。
状況:
・Japanモデルにprefectureカラム&cityカラム
・@japanにデータを.all
html
1<table id="tokyo"> 2 <% @japan.each do |f| %> 3 <tr> 4 <td class="tokyo-td1"><%= f.prefecture %></td> 5 <td><%= f.city %></td> 6 </tr> 7 <% end %> 8</table>
結果:
|東京|港区 |
|東京|墨田区|
|東京|中央区|
わかりにくくて申し訳ないですが、以下のコードで、同じ値(この場合は「東京」)を持つセルが結合されます。
$(function() { var counter = 0; var text =""; var target=""; $($('#tokyo tr:first, .tokyo-td1').get().reverse()).each(function() { if ($(this).text() == text) { counter++; if(target !="") target.remove(); } else { if(target !="") target.attr('rowSpan', counter); counter=1; } text = $(this).text(); target = $(this); }); });
結果(after):
|東京|港区 |
| |墨田区|
| |中央区|
わかりにくいですが、東京のrowspanが3になって結合されています。
このスクリプトが理解できていないので、どなたか詳しい方に解説していただきたいです。
※上と同じもの $(function() { var counter = 0; var text =""; var target=""; $($('#tokyo tr:first, .tokyo-td1').get().reverse()).each(function() { ← Q1:なぜ.reverse()? if ($(this).text() == text) { counter++; ← Q2:++って何? if(target !="") ← Q3:(target !="")ってどういうこと?というかこのtargetって具体的にどこを指してる? target.remove(); } else { if(target !="") target.attr('rowSpan', counter); counter=1; ← Q4:これは何? } text = $(this).text(); ← Q5:この記述は何のため? target = $(this); ← Q6:この記述は何のため? }); });
コード内にQ1~Q6まで書きました。他にもわからない点がありますが、とりあえず1~6について理解すればわかるかもしれないので、どなたか解説お願いします。
本当に全くの初心者です。お手柔らかにお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/15 13:05
退会済みユーザー
2018/10/15 13:38