質問編集履歴

5

文章を少々修正しました。

2020/10/19 02:24

投稿

navbisuu
navbisuu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  <!--1つのスライド-->
36
36
 
37
- <div class="slide-box">
37
+ <div class="product-slide">
38
38
 
39
39
  <!--メインスライド-->
40
40
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  // 参考サイト:https://takblog.site/web/?p=144
90
90
 
91
- var sliderBox = ".slide-box";
91
+ var sliderBox = ".product-slide";
92
92
 
93
93
  var slider = ".slide-main"; //スライダー
94
94
 
@@ -286,7 +286,7 @@
286
286
 
287
287
  //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
288
288
 
289
- var classLength = $(".slide-box").length;
289
+ var classLength = $(".product-slide").length;
290
290
 
291
291
  var newClassMain, newClassThumbnail, slider, thumbnailItem;
292
292
 

4

クラス名を変更しました。

2020/10/19 02:24

投稿

navbisuu
navbisuu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  <!--1つのスライド-->
36
36
 
37
- <div class="product-slide">
37
+ <div class="slide-box">
38
38
 
39
39
  <!--メインスライド-->
40
40
 
@@ -84,11 +84,11 @@
84
84
 
85
85
  $(function() {
86
86
 
87
- // slide商品紹介(サムネイルつき)---------------------
87
+ // slide(サムネイルつき)---------------------
88
88
 
89
89
  // 参考サイト:https://takblog.site/web/?p=144
90
90
 
91
- var sliderBox = ".product-slide";
91
+ var sliderBox = ".slide-box";
92
92
 
93
93
  var slider = ".slide-main"; //スライダー
94
94
 
@@ -278,7 +278,7 @@
278
278
 
279
279
  $(function() {
280
280
 
281
- // slide商品紹介(サムネイルつき)---------------------
281
+ // slide(サムネイルつき)---------------------
282
282
 
283
283
  // 参考サイト:https://takblog.site/web/?p=144
284
284
 
@@ -286,7 +286,7 @@
286
286
 
287
287
  //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
288
288
 
289
- var classLength = $(".product-slide").length;
289
+ var classLength = $(".slide-box").length;
290
290
 
291
291
  var newClassMain, newClassThumbnail, slider, thumbnailItem;
292
292
 

3

文章を少々修正しました。

2020/10/19 02:22

投稿

navbisuu
navbisuu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -246,7 +246,7 @@
246
246
 
247
247
  そこで、javascriptの記述をスライダーの数だけ複製し、
248
248
 
249
- スライダーとサムネイル画像を、
249
+ スライダーとサムネイル画像の部分を、
250
250
 
251
251
  下記のように、変数と中に入れるクラス名を手動で変更したら、うまく起動しました。
252
252
 

2

コメントいただいてから試したことを追記しました。

2020/10/18 09:42

投稿

navbisuu
navbisuu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -225,3 +225,193 @@
225
225
  ```
226
226
 
227
227
  以上となります。お手数おかけしますが、よろしくお願いします。
228
+
229
+
230
+
231
+
232
+
233
+ ### コメントいただいてから試してみたこと
234
+
235
+ yambejp様にご教示いただいた方法で
236
+
237
+ 思うようにdata-indexの連番を付けることができました!
238
+
239
+ しかし、スライドとサムネイルのクラス名が同じだと、
240
+
241
+ 複数増やした状態で、サムネイルをクリックしたら、同時にスライドが動いてしまうことに気付きました。。。
242
+
243
+ なので、スライドとサムネイルのクラス名を変更する方法で実装を考え直しています。
244
+
245
+
246
+
247
+ そこで、javascriptの記述をスライダーの数だけ複製し、
248
+
249
+ スライダーとサムネイル画像を、
250
+
251
+ 下記のように、変数と中に入れるクラス名を手動で変更したら、うまく起動しました。
252
+
253
+ ```javascript
254
+
255
+ var slider = ".main0"; //スライダー
256
+
257
+ var thumbnailItem = ".slide-thumbnail0 li"; //サムネイル画像
258
+
259
+ ```
260
+
261
+ ```javascript
262
+
263
+ var slider1 = ".main1"; //スライダー
264
+
265
+ var thumbnailItem1 = ".slide-thumbnail1 li"; //サムネイル画像
266
+
267
+ ```
268
+
269
+ これをfor文を使って動的に変数とクラスの番号を変更したいのですが、うまくいきません。。。
270
+
271
+ 下記のように、クラスの番号を動的に変更するようにしたのですが、
272
+
273
+ スライドが複数ある場合、
274
+
275
+ どのサムネイルをクリックしても、一番下のスライドが反応してしまいます。
276
+
277
+ ```javascript
278
+
279
+ $(function() {
280
+
281
+ // slide商品紹介(サムネイルつき)---------------------
282
+
283
+ // 参考サイト:https://takblog.site/web/?p=144
284
+
285
+
286
+
287
+ //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
288
+
289
+ var classLength = $(".product-slide").length;
290
+
291
+ var newClassMain, newClassThumbnail, slider, thumbnailItem;
292
+
293
+ //【追加】サムネイル画像アイテムに data-index でindex番号を付与
294
+
295
+ for (var i = 0; classLength > i; i++) {
296
+
297
+ newClassMain = "main" + i;
298
+
299
+ newClassThumbnail = "thumbnail" + i;
300
+
301
+ slider = "." + newClassMain;
302
+
303
+ thumbnailItem = "." + newClassThumbnail + " " + "li";
304
+
305
+ $(".slide-main")
306
+
307
+ .eq(i)
308
+
309
+ .addClass(newClassMain);
310
+
311
+ $(".slide-thumbnail")
312
+
313
+ .eq(i)
314
+
315
+ .addClass(newClassThumbnail);
316
+
317
+ //サムネイル画像アイテムに data-index でindex番号を付与
318
+
319
+ $(thumbnailItem).each(function() {
320
+
321
+ var index = $(thumbnailItem).index(this);
322
+
323
+ $(this).attr("data-index", index);
324
+
325
+ });
326
+
327
+ //スライダー初期化後、カレントのサムネイル画像にクラス「thumbnail-current」を付ける
328
+
329
+ //「slickスライダー作成」の前にこの記述は書いてください。
330
+
331
+ $(slider).on("init", function(slick) {
332
+
333
+ var index = $(".slide-item.slick-slide.slick-current").attr(
334
+
335
+ "data-slick-index"
336
+
337
+ );
338
+
339
+ $(thumbnailItem + '[data-index="' + index + '"]').addClass(
340
+
341
+ "thumbnail-current"
342
+
343
+ );
344
+
345
+ });
346
+
347
+ //slickスライダー初期化
348
+
349
+ $(slider).slick({
350
+
351
+ arrows: true,
352
+
353
+ dots: true,
354
+
355
+ fade: true,
356
+
357
+ infinite: false //これは必須
358
+
359
+ });
360
+
361
+ //サムネイル画像アイテムをクリックした時にスライダー切り替え
362
+
363
+ $(thumbnailItem).on("click", function() {
364
+
365
+ var index = $(this).attr("data-index");
366
+
367
+ $(slider).slick("slickGoTo", index, false);
368
+
369
+ });
370
+
371
+ //サムネイル画像のカレントを切り替え
372
+
373
+ $(slider).on("beforeChange", function(
374
+
375
+ event,
376
+
377
+ slick,
378
+
379
+ currentSlide,
380
+
381
+ nextSlide
382
+
383
+ ) {
384
+
385
+ $(thumbnailItem).each(function() {
386
+
387
+ $(this).removeClass("thumbnail-current");
388
+
389
+ });
390
+
391
+ $(thumbnailItem + '[data-index="' + nextSlide + '"]').addClass(
392
+
393
+ "thumbnail-current"
394
+
395
+ );
396
+
397
+ });
398
+
399
+ }
400
+
401
+ }
402
+
403
+ ```
404
+
405
+
406
+
407
+ そのため、変数名も変更する必要があると考えています。
408
+
409
+ しかし、slider[i],thumbnailItem[i] ではうまくいきませんでした。。
410
+
411
+
412
+
413
+ 長文で申し訳ありません。
414
+
415
+ どうかお力をお借りできれば嬉しいです。
416
+
417
+ よろしくお願い申し上げます。

1

タグを追加しました。

2020/10/18 09:35

投稿

navbisuu
navbisuu

スコア2

test CHANGED
File without changes
test CHANGED
File without changes