質問編集履歴

3

タグ更新

2019/07/16 23:51

投稿

fight
fight

スコア11

test CHANGED
@@ -1 +1 @@
1
- クッキーまたはパラメーター使ってタブの位置の切り替えをしたい
1
+ Cookieまたはパラメーター使ってタブの位置の切り替えをしたい
test CHANGED
File without changes

2

実現したいことの内容に不備があり、訂正しました。

2019/07/16 23:51

投稿

fight
fight

スコア11

test CHANGED
File without changes
test CHANGED
@@ -2,206 +2,296 @@
2
2
 
3
3
 
4
4
 
5
- タブ切り替え表示で以下 ①②両方の機能をもっているようにしたい
5
+ 通常のタブ切り替え機能で以下 ①②両方の機能をもっているようにしたい
6
+
7
+
6
8
 
7
9
  ①クッキーを利用してタブの位置を、次回アクセス時に再現させる
8
10
 
11
+ ②パラメーターを利用して、指定のタブを開くことも出来る
12
+
13
+
14
+
15
+
16
+
17
+ <条件>
18
+
19
+ ・パラメーターとクッキーの値が両方存在する場合は、パラメーター優先
20
+
21
+ 例)index.html?bra=bbb、クッキーあり(タブCCC開いた値)→ タブBBBが開く
22
+
23
+
24
+
25
+ その他例)
26
+
27
+ index.html?bra=aaa→タブAAAが開く
28
+
29
+ index.html?bra=bbb→タブBBBが開く
30
+
31
+ index.html?bra=ccc→タブCCCが開く
32
+
33
+ index.html、クッキーなし →タブAAAが開く
34
+
35
+ index.html、クッキー(BBB開いた値)あり →タブBBBが開く
36
+
37
+
38
+
39
+
40
+
41
+ ### 発生している問題・エラーメッセージ
42
+
43
+
44
+
45
+ ①は実装できていて、①をベースに②の機能を追加したいと考えています。
46
+
47
+
48
+
49
+ 下記記事を参考にしましたが、どう合体させて良いかわかりません。
50
+
51
+ https://irohacross.net/2016/04/jquery_tabpram.html
52
+
53
+
54
+
55
+
56
+
57
+ もし、現状①ベースから、②の機能追加は難しい場合は
58
+
59
+ ゼロベースから考えようと思います。
60
+
61
+ その場合、なにか参考記事があれば教えていただきたいです。
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ ### ①だけのソースコード
70
+
71
+
72
+
73
+ ```
74
+
75
+ <!doctype html>
76
+
77
+ <html>
78
+
79
+ <head>
80
+
81
+ <script src="jquery.js" type="text/javascript"></script>
82
+
83
+ <link href="css/common_sp.css" type="text/css" rel="stylesheet">
84
+
85
+ <script src="jquery.cookie.js" type="text/javascript"></script>
86
+
87
+
88
+
89
+ <script>
90
+
91
+ jQuery(function(){
92
+
93
+
94
+
95
+ var index = 0;
96
+
97
+ var Tabs = jQuery("#tabnavi li a");
98
+
99
+ var TabActive = "active";
100
+
101
+ var TabContents = jQuery("div#tabcontent");
102
+
103
+
104
+
105
+
106
+
107
+ jQuery('#tabcontent > div').hide();
108
+
109
+
110
+
111
+
112
+
113
+ jQuery(Tabs).click(function(e){
114
+
115
+ e.preventDefault();
116
+
117
+ jQuery('#tabcontent > div').hide().filter(this.hash).fadeIn();
118
+
119
+ jQuery(jQuery(this).attr("href")).fadeIn(300);
120
+
121
+ jQuery(Tabs).removeClass(TabActive);
122
+
123
+ jQuery(this).addClass(TabActive);
124
+
125
+ jQuery.cookie("contents", jQuery(this).attr("href") , {expires: 7});
126
+
127
+ jQuery('img.lazyload_:visible').trigger('appear');
128
+
129
+ });
130
+
131
+
132
+
133
+ // クッキー読み込み
134
+
135
+ var CookieName = jQuery.cookie("contents");
136
+
137
+ if (CookieName != null) {
138
+
139
+ jQuery(Tabs).removeClass(TabActive);
140
+
141
+ jQuery("a[href="+CookieName+"]").addClass(TabActive);
142
+
143
+ jQuery(CookieName).fadeIn(300);
144
+
145
+ } else {
146
+
147
+ jQuery(Tabs).eq(index).addClass(TabActive);
148
+
149
+ jQuery(TabContents).show();
150
+
151
+ jQuery("div:first" , TabContents).show();
152
+
153
+ }
154
+
155
+
156
+
157
+
158
+
159
+ });
160
+
161
+ </script>
162
+
163
+
164
+
165
+
166
+
167
+ </head>
168
+
169
+
170
+
171
+ <body>
172
+
173
+
174
+
175
+ <div id="tabnavi">
176
+
177
+ <ul>
178
+
179
+ <li><a href="#extab01">AAA</a></li>
180
+
181
+ <li><a href="#extab02">BBB</a></li>
182
+
183
+ <li><a href="#extab03">CCC</a></li>
184
+
185
+ </ul>
186
+
187
+ </div>
188
+
189
+
190
+
191
+ <div id="tabcontent">
192
+
193
+ <div id="extab01">AAA</div>
194
+
195
+ <div id="extab02">BBB</div>
196
+
197
+ <div id="extab03">CCC</div>
198
+
199
+ </div>
200
+
201
+
202
+
203
+ </body>
204
+
205
+ </html>
206
+
207
+
208
+
209
+
210
+
211
+ ```
212
+
213
+
214
+
215
+ これをベースに
216
+
9
217
  ②パラメーターを利用して、指定のタブを開く
10
218
 
11
-
12
-
13
-
14
-
15
- <条件>
16
-
17
- ・パラメーターとクッキーの値が両方存在する場合は、パラメーター優先
18
-
19
- 例)index.html?bra=bbb、クッキーあり(タブCCC開いた値)→ タブBBBが開く
20
-
21
-
22
-
23
- その他例)
24
-
25
- index.html?bra=aaa→タブAAAが開く
26
-
27
- index.html?bra=bbb→タブBBBが開く
28
-
29
- index.html?bra=ccc→タブCCCが開く
30
-
31
- index.html、クッキーなし →タブAAAが開く
32
-
33
- index.html、クッキー(BBB開いた値)あり →タブBBBが開く
34
-
35
-
36
-
37
-
38
-
39
- ### 発生している問題・エラーメッセージ
40
-
41
-
42
-
43
- ①は実装できていて、①をベースに②の機能追加したいと考えています。
219
+ の機能追加したいと思っています。
44
-
45
-
46
-
220
+
221
+
222
+
223
+
224
+
225
+
226
+
47
- 下記記事を参考にましが、どう合体させて良いかわかりません。
227
+ ### 試したこと
228
+
229
+
48
230
 
49
231
  https://irohacross.net/2016/04/jquery_tabpram.html
50
232
 
51
-
52
-
53
-
54
-
55
- もし、現状①ベースから、②の機能追加は難し場合は
233
+ 以下参考記事からてきて
56
-
234
+
57
- ゼロベースから考ようと思いま
235
+ クラ名とてみたのでが・・
58
-
59
- その場合、なにか参考記事があれば教えていただきたいです。
236
+
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
- ### ①だけのソースコード
237
+
68
238
 
69
239
 
70
240
 
71
241
  ```
72
242
 
73
- <!doctype html>
74
-
75
- <html>
76
-
77
- <head>
78
-
79
- <script src="jquery.js" type="text/javascript"></script>
80
-
81
- <link href="css/common_sp.css" type="text/css" rel="stylesheet">
82
-
83
- <script src="jquery.cookie.js" type="text/javascript"></script>
84
-
85
-
86
-
87
- <script>
88
-
89
- jQuery(function(){
90
-
91
-
92
-
93
- var index = 0;
94
-
95
- var Tabs = jQuery("#tabnavi li a");
96
-
97
- var TabActive = "active";
98
-
99
- var TabContents = jQuery("div#tabcontent");
100
-
101
-
102
-
103
-
104
-
105
- jQuery('#tabcontent > div').hide();
106
-
107
-
108
-
109
-
110
-
111
- jQuery(Tabs).click(function(e){
112
-
113
- e.preventDefault();
114
-
115
- jQuery('#tabcontent > div').hide().filter(this.hash).fadeIn();
116
-
117
- jQuery(jQuery(this).attr("href")).fadeIn(300);
118
-
119
- jQuery(Tabs).removeClass(TabActive);
120
-
121
- jQuery(this).addClass(TabActive);
122
-
123
- jQuery.cookie("contents", jQuery(this).attr("href") , {expires: 7});
124
-
125
- jQuery('img.lazyload_:visible').trigger('appear');
126
-
127
- });
128
-
129
-
130
-
131
- // クッキー読み込み
132
-
133
- var CookieName = jQuery.cookie("contents");
134
-
135
- if (CookieName != null) {
136
-
137
- jQuery(Tabs).removeClass(TabActive);
138
-
139
- jQuery("a[href="+CookieName+"]").addClass(TabActive);
140
-
141
- jQuery(CookieName).fadeIn(300);
142
-
143
- } else {
144
-
145
- jQuery(Tabs).eq(index).addClass(TabActive);
146
-
147
- jQuery(TabContents).show();
148
-
149
- jQuery("div:first" , TabContents).show();
150
-
151
- }
152
-
153
-
154
-
155
-
243
+ jQuery(function() {
244
+
245
+ // URLを取得
246
+
247
+ var url = location.href;
248
+
249
+ //URLチェック。パラメータが「?no=tab?」以外の場合はデータを渡さない
250
+
251
+ url = (url.match(/?no=tab\d+jQuery/) || [])[0];
252
+
253
+ //取得したURLを「?」で分割。変数paramsに格納
254
+
255
+ var params = url.split("?");
256
+
257
+ //さらにparams内、0から数えて1番目のデータを「=」で分割。変数tabに格納
258
+
259
+ var tab = params[1].split("=");
260
+
261
+ //tabに要素が存在するなら、変数tab内0から数えて1番目のデータを変数tabnameに格納
262
+
263
+ if(jQuery(tab).length){
264
+
265
+ var tabname = tab[1];
266
+
267
+ } else{
268
+
269
+ // 要素が存在しなければtabnametab1を代入する
270
+
271
+ var tabname = "tab01";
272
+
273
+ }
274
+
275
+ //コンテンツを一度すべて非表示にし、
276
+
277
+ jQuery('#tabcontent').css('display','none');
278
+
279
+ //一度タブについているクラスselectを消し、
280
+
281
+ jQuery('#tabnavi li').removeClass('display');
282
+
283
+ var tabno = jQuery('#tabnavi li#' + tabname).index();
284
+
285
+ //クリックされたタブと同じ順番のコンテンツを表示します。
286
+
287
+ jQuery('#tabcontent').eq(tabno).fadeIn();
288
+
289
+ //クリックされたタブのみにクラスselectをつけます。
290
+
291
+ jQuery('#tabnavi li').eq(tabno).css('display','block');
156
292
 
157
293
  });
158
294
 
159
- </script>
160
-
161
-
162
-
163
-
164
-
165
- </head>
166
-
167
-
168
-
169
- <body>
170
-
171
-
172
-
173
- <div id="tabnavi">
174
-
175
- <ul>
176
-
177
- <li><a href="#extab01">AAA</a></li>
178
-
179
- <li><a href="#extab02">BBB</a></li>
180
-
181
- <li><a href="#extab03">CCC</a></li>
182
-
183
- </ul>
184
-
185
- </div>
186
-
187
-
188
-
189
- <div id="tabcontent">
190
-
191
- <div id="extab01">AAA</div>
192
-
193
- <div id="extab02">BBB</div>
194
-
195
- <div id="extab03">CCC</div>
196
-
197
- </div>
198
-
199
-
200
-
201
- </body>
202
-
203
- </html>
204
-
205
295
 
206
296
 
207
297
 
@@ -210,94 +300,6 @@
210
300
 
211
301
 
212
302
 
213
- これをベースに
214
-
215
- ②パラメーターを利用して、指定のタブを開く
216
-
217
- の機能も追加したいと思っています。
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
- ### 試したこと
226
-
227
-
228
-
229
- https://irohacross.net/2016/04/jquery_tabpram.html
230
-
231
- 以下参考記事から抜いてきて
232
-
233
- クラス名とか変えてみたのですが・・
234
-
235
-
236
-
237
-
238
-
239
- ```
240
-
241
- jQuery(function() {
242
-
243
- // URLを取得
244
-
245
- var url = location.href;
246
-
247
- //URLチェック。パラメータが「?no=tab?」以外の場合はデータを渡さない
248
-
249
- url = (url.match(/?no=tab\d+jQuery/) || [])[0];
250
-
251
- //取得したURLを「?」で分割。変数paramsに格納
252
-
253
- var params = url.split("?");
254
-
255
- //さらにparams内、0から数えて1番目のデータを「=」で分割。変数tabに格納
256
-
257
- var tab = params[1].split("=");
258
-
259
- //tabに要素が存在するなら、変数tab内0から数えて1番目のデータを変数tabnameに格納
260
-
261
- if(jQuery(tab).length){
262
-
263
- var tabname = tab[1];
264
-
265
- } else{
266
-
267
- // 要素が存在しなければtabnameにtab1を代入する
268
-
269
- var tabname = "tab01";
270
-
271
- }
272
-
273
- //コンテンツを一度すべて非表示にし、
274
-
275
- jQuery('#tabcontent').css('display','none');
276
-
277
- //一度タブについているクラスselectを消し、
278
-
279
- jQuery('#tabnavi li').removeClass('display');
280
-
281
- var tabno = jQuery('#tabnavi li#' + tabname).index();
282
-
283
- //クリックされたタブと同じ順番のコンテンツを表示します。
284
-
285
- jQuery('#tabcontent').eq(tabno).fadeIn();
286
-
287
- //クリックされたタブのみにクラスselectをつけます。
288
-
289
- jQuery('#tabnavi li').eq(tabno).css('display','block');
290
-
291
- });
292
-
293
-
294
-
295
-
296
-
297
- ```
298
-
299
-
300
-
301
303
  ### 補足情報(FW/ツールのバージョンなど)
302
304
 
303
305
 

1

タグを内容を変更しました

2019/07/16 11:21

投稿

fight
fight

スコア11

test CHANGED
File without changes
test CHANGED
File without changes