teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

IE

2019/08/07 05:52

投稿

yambejp
yambejp

スコア117906

answer CHANGED
@@ -207,4 +207,22 @@
207
207
  - $(`.m${i}`)=$('.m1')つまりm1クラス全てにtestというクラスを付加する
208
208
 
209
209
  という流れです
210
- これを1~12まで繰り返しています
210
+ これを1~12まで繰り返しています
211
+
212
+
213
+ # IE対応
214
+ IEで問題になる箇所は
215
+ - Arrayにfillする機能がない
216
+ - アロー関数がNG
217
+ - ヒアドキュメント非対応
218
+
219
+ ```javascript
220
+ $(function(){
221
+ [1,2,3,4,5,6,7,8,9,10,11,12].forEach(function(i){
222
+ if($('.m'+i+':gt(0)').filter(function(){return $(this).text()!==""}).length==0){
223
+ $('.m'+i+':eq(0)').text("");
224
+ $('.m'+i).addClass("test");
225
+ }
226
+ });
227
+ });
228
+ ```

2

解説

2019/08/07 05:51

投稿

yambejp
yambejp

スコア117906

answer CHANGED
@@ -174,4 +174,37 @@
174
174
  <td>644</td>
175
175
  </tr>
176
176
  </table>
177
- ```
177
+ ```
178
+
179
+ # js解説
180
+
181
+ m1~m12というクラスを処理するために1~12という文字が必要です
182
+ 「Array(12).fill(null).map((x,y)=>y+1)」が12個の要素を持った配列をつくり
183
+ そこ要素に1から順番に12まで割り振ってます、つまり
184
+ [1,2,3,4,5,6,7,8,9,10,11,12]という配列です。
185
+
186
+ 見やすくするとこういうこと。
187
+ ```javascript
188
+ [1,2,3,4,5,6,7,8,9,10,11,12].forEach(i=>{
189
+ if($(`.m${i}:gt(0)`).filter(function(){return $(this).text()!==""}).length==0){
190
+ $(`.m${i}:eq(0)`).text("");
191
+ $(`.m${i}`).addClass("test");
192
+ }
193
+ });
194
+ ```
195
+
196
+ 上記1~12の配列から一つずつ要素を取り出しiに入れてループしています
197
+ 仮にまずiが1だったとき
198
+
199
+ 「$(`.m${i}:gt(0)`)」は展開すると「$('.m1:gt(0)')」とうこと
200
+ つまりm1クラスで0番目の要素より大きい要素。
201
+ m1クラスがついたセルは5個あるので先頭を除く4個分の要素を指します。
202
+
203
+ それをfilterして中身(text)が空ではないものの数を数えます(length)
204
+ それが0個ということは先頭以外のすべてのセルが空ということ
205
+ その場合、
206
+ - $(`.m${i}:eq(0)`)=$('.m1:eq(0)')つまりm1クラスの先頭セルのテキストを""にする
207
+ - $(`.m${i}`)=$('.m1')つまりm1クラス全てにtestというクラスを付加する
208
+
209
+ という流れです
210
+ これを1~12まで繰り返しています

1

ちょうせい

2019/08/07 02:21

投稿

yambejp
yambejp

スコア117906

answer CHANGED
@@ -28,4 +28,150 @@
28
28
  </tr>
29
29
  </tbody>
30
30
  </table>
31
+ ```
32
+
33
+ # 調整版
34
+ ```javavascript
35
+ <style>
36
+ table{border-collapse:collapse;}
37
+ td{border:solid 1px;}
38
+ td.test{background-Color:yellow;}
39
+ td.test{border-left:solid 0;border-right:solid 0;width:0;padding:0;margin:0;background-Color:yellow;}
40
+ td.test+td{border-left:solid 0}
41
+ </style>
42
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
43
+ <script>
44
+ $(function(){
45
+ Array(12).fill(null).map((x,y)=>y+1).forEach(i=>{
46
+ if($(`.m${i}:gt(0)`).filter(function(){return $(this).text()!==""}).length==0){
47
+ $(`.m${i}:eq(0)`).text("");
48
+ $(`.m${i}`).addClass("test");
49
+ }
50
+
51
+ });
52
+ });
53
+ </script>
54
+ <table id="tbl">
55
+ <tbody>
56
+ <tr class="head">
57
+ <td rowspan="2">No</td>
58
+ <td rowspan="2">タイトル</td>
59
+ <td rowspan="2" class="detail">データ</td>
60
+ <td rowspan="2" class="date"></td>
61
+ <td rowspan="3">累計</td>
62
+ <td rowspan="3">統計</td>
63
+ <td colspan="14">18年度</td>
64
+ <td rowspan="3">18年度合計</td>
65
+
66
+ </tr>
67
+ <tr class="head">
68
+ <td colspan="6">18上期</td>
69
+ <td rowspan="2">18上期合計</td>
70
+ <td colspan="6">18下期</td>
71
+ <td rowspan="2">18下期合計</td>
72
+ </tr>
73
+ <tr class="head">
74
+ <td>No</td>
75
+ <td>品番</td>
76
+ <td class="detail">品名</td>
77
+ <td class="date">確認日</td>
78
+ <td class="m1">18/1</td>
79
+ <td class="m2">18/2</td>
80
+ <td class="m3">18/3</td>
81
+ <td class="m4">18/4</td>
82
+ <td class="m5">18/5</td>
83
+ <td class="m6">18/6</td>
84
+ <td class="m7">18/7</td>
85
+ <td class="m8">18/8</td>
86
+ <td class="m9">18/9</td>
87
+ <td class="m10">18/10</td>
88
+ <td class="m11">18/11</td>
89
+ <td class="m12">18/12</td>
90
+ </tr>
91
+ <tr>
92
+ <td rowspan="2">1</td>
93
+ <td rowspan="2">RNG001</td>
94
+ <td rowspan="2" class="detail">りんご</td>
95
+ <td class="date">2019年2月28日</td>
96
+ <td>3</td>
97
+ <td></td>
98
+ <td class="m1"></td>
99
+ <td class="m2"></td>
100
+ <td class="m3"></td>
101
+ <td class="m4"></td>
102
+ <td class="m5">40</td>
103
+ <td class="m6">13</td>
104
+ <td>13</td>
105
+ <td class="m7">5</td>
106
+ <td class="m8"></td>
107
+ <td class="m9"></td>
108
+ <td class="m10"></td>
109
+ <td class="m11"></td>
110
+ <td class="m12">627</td>
111
+ <td>627</td>
112
+ <td>640</td>
113
+
114
+ </tr>
115
+ <tr>
116
+ <td class="date">2019年3月29日</td>
117
+ <td>3</td>
118
+ <td></td>
119
+ <td class="m1"></td>
120
+ <td class="m2"></td>
121
+ <td class="m3"></td>
122
+ <td class="m4"></td>
123
+ <td class="m5">40</td>
124
+ <td class="m6">12</td>
125
+ <td>12</td>
126
+ <td class="m7">5</td>
127
+ <td class="m8"></td>
128
+ <td class="m9"></td>
129
+ <td class="m10"></td>
130
+ <td class="m11"></td>
131
+ <td class="m12">627</td>
132
+ <td>627</td>
133
+ <td>639</td>
134
+ </tr>
135
+ <tr>
136
+ <td colspan="3" rowspan="2"></td>
137
+ <td>2019年2月28日</td>
138
+ <td>42</td>
139
+ <td>10</td>
140
+ <td class="m1"></td>
141
+ <td class="m2"></td>
142
+ <td class="m3"></td>
143
+ <td class="m4"></td>
144
+ <td class="m5">40</td>
145
+ <td class="m6">18</td>
146
+ <td>18</td>
147
+ <td class="m7">5</td>
148
+ <td class="m8"></td>
149
+ <td class="m9"></td>
150
+ <td class="m10"></td>
151
+ <td class="m11"></td>
152
+ <td class="m12">627</td>
153
+ <td>627</td>
154
+ <td>645</td>
155
+ </tr>
156
+ <tr>
157
+ <td>2019年3月29日</td>
158
+ <td>42</td>
159
+ <td>10</td>
160
+ <td class="m1"></td>
161
+ <td class="m2"></td>
162
+ <td class="m3"></td>
163
+ <td class="m4"></td>
164
+ <td class="m5">40</td>
165
+ <td class="m6">17</td>
166
+ <td>17</td>
167
+ <td class="m7">5</td>
168
+ <td class="m8"></td>
169
+ <td class="m9"></td>
170
+ <td class="m10"></td>
171
+ <td class="m11"></td>
172
+ <td class="m12">627</td>
173
+ <td>627</td>
174
+ <td>644</td>
175
+ </tr>
176
+ </table>
31
177
  ```