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

質問編集履歴

5

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

2020/10/19 02:24

投稿

navbisuu
navbisuu

スコア2

title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```html
18
18
  <!--1つのスライド-->
19
- <div class="slide-box">
19
+ <div class="product-slide">
20
20
  <!--メインスライド-->
21
21
  <ul class="slide-main">
22
22
  <li>1</li>
@@ -43,7 +43,7 @@
43
43
  $(function() {
44
44
  // slide(サムネイルつき)---------------------
45
45
  // 参考サイト:https://takblog.site/web/?p=144
46
- var sliderBox = ".slide-box";
46
+ var sliderBox = ".product-slide";
47
47
  var slider = ".slide-main"; //スライダー
48
48
  var thumbnailItem = ".slide-thumbnail li"; //サムネイル画像
49
49
  //サムネイル画像アイテムに data-index でindex番号を付与
@@ -142,7 +142,7 @@
142
142
  // 参考サイト:https://takblog.site/web/?p=144
143
143
 
144
144
  //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
145
- var classLength = $(".slide-box").length;
145
+ var classLength = $(".product-slide").length;
146
146
  var newClassMain, newClassThumbnail, slider, thumbnailItem;
147
147
  //【追加】サムネイル画像アイテムに data-index でindex番号を付与
148
148
  for (var i = 0; classLength > i; i++) {

4

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

2020/10/19 02:24

投稿

navbisuu
navbisuu

スコア2

title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```html
18
18
  <!--1つのスライド-->
19
- <div class="product-slide">
19
+ <div class="slide-box">
20
20
  <!--メインスライド-->
21
21
  <ul class="slide-main">
22
22
  <li>1</li>
@@ -41,9 +41,9 @@
41
41
 
42
42
  ```javascript
43
43
  $(function() {
44
- // slide商品紹介(サムネイルつき)---------------------
44
+ // slide(サムネイルつき)---------------------
45
45
  // 参考サイト:https://takblog.site/web/?p=144
46
- var sliderBox = ".product-slide";
46
+ var sliderBox = ".slide-box";
47
47
  var slider = ".slide-main"; //スライダー
48
48
  var thumbnailItem = ".slide-thumbnail li"; //サムネイル画像
49
49
  //サムネイル画像アイテムに data-index でindex番号を付与
@@ -138,11 +138,11 @@
138
138
  どのサムネイルをクリックしても、一番下のスライドが反応してしまいます。
139
139
  ```javascript
140
140
  $(function() {
141
- // slide商品紹介(サムネイルつき)---------------------
141
+ // slide(サムネイルつき)---------------------
142
142
  // 参考サイト:https://takblog.site/web/?p=144
143
143
 
144
144
  //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
145
- var classLength = $(".product-slide").length;
145
+ var classLength = $(".slide-box").length;
146
146
  var newClassMain, newClassThumbnail, slider, thumbnailItem;
147
147
  //【追加】サムネイル画像アイテムに data-index でindex番号を付与
148
148
  for (var i = 0; classLength > i; i++) {

3

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

2020/10/19 02:22

投稿

navbisuu
navbisuu

スコア2

title CHANGED
File without changes
body CHANGED
@@ -122,7 +122,7 @@
122
122
  なので、スライドとサムネイルのクラス名を変更する方法で実装を考え直しています。
123
123
 
124
124
  そこで、javascriptの記述をスライダーの数だけ複製し、
125
- スライダーとサムネイル画像を、
125
+ スライダーとサムネイル画像の部分を、
126
126
  下記のように、変数と中に入れるクラス名を手動で変更したら、うまく起動しました。
127
127
  ```javascript
128
128
  var slider = ".main0"; //スライダー

2

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

2020/10/18 09:42

投稿

navbisuu
navbisuu

スコア2

title CHANGED
File without changes
body CHANGED
@@ -111,4 +111,99 @@
111
111
  });
112
112
  });
113
113
  ```
114
- 以上となります。お手数おかけしますが、よろしくお願いします。
114
+ 以上となります。お手数おかけしますが、よろしくお願いします。
115
+
116
+
117
+ ### コメントいただいてから試してみたこと
118
+ yambejp様にご教示いただいた方法で
119
+ 思うようにdata-indexの連番を付けることができました!
120
+ しかし、スライドとサムネイルのクラス名が同じだと、
121
+ 複数増やした状態で、サムネイルをクリックしたら、同時にスライドが動いてしまうことに気付きました。。。
122
+ なので、スライドとサムネイルのクラス名を変更する方法で実装を考え直しています。
123
+
124
+ そこで、javascriptの記述をスライダーの数だけ複製し、
125
+ スライダーとサムネイル画像を、
126
+ 下記のように、変数と中に入れるクラス名を手動で変更したら、うまく起動しました。
127
+ ```javascript
128
+ var slider = ".main0"; //スライダー
129
+ var thumbnailItem = ".slide-thumbnail0 li"; //サムネイル画像
130
+ ```
131
+ ```javascript
132
+ var slider1 = ".main1"; //スライダー
133
+ var thumbnailItem1 = ".slide-thumbnail1 li"; //サムネイル画像
134
+ ```
135
+ これをfor文を使って動的に変数とクラスの番号を変更したいのですが、うまくいきません。。。
136
+ 下記のように、クラスの番号を動的に変更するようにしたのですが、
137
+ スライドが複数ある場合、
138
+ どのサムネイルをクリックしても、一番下のスライドが反応してしまいます。
139
+ ```javascript
140
+ $(function() {
141
+ // slide商品紹介(サムネイルつき)---------------------
142
+ // 参考サイト:https://takblog.site/web/?p=144
143
+
144
+ //【追加】スライドの数を数え、その数だけ個別のクラスを付与する
145
+ var classLength = $(".product-slide").length;
146
+ var newClassMain, newClassThumbnail, slider, thumbnailItem;
147
+ //【追加】サムネイル画像アイテムに data-index でindex番号を付与
148
+ for (var i = 0; classLength > i; i++) {
149
+ newClassMain = "main" + i;
150
+ newClassThumbnail = "thumbnail" + i;
151
+ slider = "." + newClassMain;
152
+ thumbnailItem = "." + newClassThumbnail + " " + "li";
153
+ $(".slide-main")
154
+ .eq(i)
155
+ .addClass(newClassMain);
156
+ $(".slide-thumbnail")
157
+ .eq(i)
158
+ .addClass(newClassThumbnail);
159
+ //サムネイル画像アイテムに data-index でindex番号を付与
160
+ $(thumbnailItem).each(function() {
161
+ var index = $(thumbnailItem).index(this);
162
+ $(this).attr("data-index", index);
163
+ });
164
+ //スライダー初期化後、カレントのサムネイル画像にクラス「thumbnail-current」を付ける
165
+ //「slickスライダー作成」の前にこの記述は書いてください。
166
+ $(slider).on("init", function(slick) {
167
+ var index = $(".slide-item.slick-slide.slick-current").attr(
168
+ "data-slick-index"
169
+ );
170
+ $(thumbnailItem + '[data-index="' + index + '"]').addClass(
171
+ "thumbnail-current"
172
+ );
173
+ });
174
+ //slickスライダー初期化
175
+ $(slider).slick({
176
+ arrows: true,
177
+ dots: true,
178
+ fade: true,
179
+ infinite: false //これは必須
180
+ });
181
+ //サムネイル画像アイテムをクリックした時にスライダー切り替え
182
+ $(thumbnailItem).on("click", function() {
183
+ var index = $(this).attr("data-index");
184
+ $(slider).slick("slickGoTo", index, false);
185
+ });
186
+ //サムネイル画像のカレントを切り替え
187
+ $(slider).on("beforeChange", function(
188
+ event,
189
+ slick,
190
+ currentSlide,
191
+ nextSlide
192
+ ) {
193
+ $(thumbnailItem).each(function() {
194
+ $(this).removeClass("thumbnail-current");
195
+ });
196
+ $(thumbnailItem + '[data-index="' + nextSlide + '"]').addClass(
197
+ "thumbnail-current"
198
+ );
199
+ });
200
+ }
201
+ }
202
+ ```
203
+
204
+ そのため、変数名も変更する必要があると考えています。
205
+ しかし、slider[i],thumbnailItem[i] ではうまくいきませんでした。。
206
+
207
+ 長文で申し訳ありません。
208
+ どうかお力をお借りできれば嬉しいです。
209
+ よろしくお願い申し上げます。

1

タグを追加しました。

2020/10/18 09:35

投稿

navbisuu
navbisuu

スコア2

title CHANGED
File without changes
body CHANGED
File without changes