質問編集履歴

8

内容編集

2019/11/22 10:50

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【jQuery】ローカル変数を用いてスライドショーを完成させたい
1
+ 【jQuery】スライドショーを右側に動かしたい
test CHANGED
@@ -1,5 +1,3 @@
1
- 現在、①右方向には右のボタンを押すと移動し、左方向には左のボタンを押すと移動する。②右端にいる状態で右のボタンを押すと最初の位置に戻り、 左端にいる状態で左のボタンを押すと最後の位置に移動するようにやりたいです。①の実装ができません。(右に動くようになりましたが、最初に左をクリックするとimg/4.jpgが表示されない状況です。)
2
-
3
1
  現在の記述で改善が必要な部分がありましたらご指摘いただければと思います。
4
2
 
5
3
  現在の記述で解決したいです。
@@ -66,16 +64,6 @@
66
64
 
67
65
  <script type="text/javascript">
68
66
 
69
-
70
-
71
- // .animateを使い、slider-listのleftを-方向にすることでアニメーションを実現している。
72
-
73
- // 右方向は .next を押すと移動し、左方向は .prev を押すと移動する。また右端にいる状態で .next を押すと最初の位置に戻り、 左端にいる状態で .prev を押すと最後の位置に移動する。data属性にprev,nextを記述しているのでこちらを取得すると楽です。
74
-
75
- // .data() 要素のdata属性を取得します。引数が2つある場合、セットします。
76
-
77
-
78
-
79
67
  "use strict";
80
68
 
81
69
 

7

左をクリックしたときに順番通りに表示できるようにしたいです

2019/11/22 10:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
- 現在、①右方向には右のボタンを押すと移動し、左方向には左のボタンを押すと移動する。②右端にいる状態で右のボタンを押すと最初の位置に戻り、 左端にいる状態で左のボタンを押すと最後の位置に移動するようにやりたいですが、①の実装ができません。現在の記述で改善が必要部分がありましたらご指摘いただけばと思す。
1
+ 現在、①右方向には右のボタンを押すと移動し、左方向には左のボタンを押すと移動する。②右端にいる状態で右のボタンを押すと最初の位置に戻り、 左端にいる状態で左のボタンを押すと最後の位置に移動するようにやりたいです①の実装ができません。(右に動くようになりましたが、最初に左をクリックするとimg/4.jpgが表示さ状況です。
2
+
3
+ 現在の記述で改善が必要な部分がありましたらご指摘いただければと思います。
2
4
 
3
5
  現在の記述で解決したいです。
4
6
 
@@ -64,23 +66,21 @@
64
66
 
65
67
  <script type="text/javascript">
66
68
 
67
- // 今回やるのはスライドショーです。
69
+
68
70
 
69
71
  // .animateを使い、slider-listのleftを-方向にすることでアニメーションを実現している。
70
72
 
71
73
  // 右方向は .next を押すと移動し、左方向は .prev を押すと移動する。また右端にいる状態で .next を押すと最初の位置に戻り、 左端にいる状態で .prev を押すと最後の位置に移動する。data属性にprev,nextを記述しているのでこちらを取得すると楽です。
72
74
 
73
- // ちなみアニメーションですが配列を用いてそれぞれのポジションを記憶させ、添字を用いてそのポジションに移動させるようにするととても楽です。
74
-
75
- // .animate({}) cssのプロパティを一定時間かけて変化させます。アニメーションです。
76
-
77
75
  // .data() 要素のdata属性を取得します。引数が2つある場合、セットします。
78
76
 
79
77
 
80
78
 
81
79
  "use strict";
82
80
 
81
+
82
+
83
- $(function() {
83
+ $(function() {
84
84
 
85
85
  function slider(target){
86
86
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  var prevBtn = $('.slider-ctrl-btn.prev'); // prevボタンのセレクタを格納した変数
90
90
 
91
- var nextBtn = $('slider-ctrl-btn.next'); // prevボタンのセレクタを格納した変数
91
+ var nextBtn = $('.slider-ctrl-btn.next'); // prevボタンのセレクタを格納した変数
92
92
 
93
93
  var w = 0; // スライドショーの横幅
94
94
 
@@ -120,6 +120,8 @@
120
120
 
121
121
  });
122
122
 
123
+ return cloneSelector;
124
+
123
125
  };
124
126
 
125
127
 
@@ -136,7 +138,7 @@
136
138
 
137
139
  // nextボタンのクリックで実行される処理
138
140
 
139
- if (way < 0){
141
+ if( way < 0 ){
140
142
 
141
143
  cloneSelector = clone(items[0]);
142
144
 
@@ -154,158 +156,176 @@
154
156
 
155
157
  // prevボタンのクリックで実行される処理
156
158
 
159
+ }else{
160
+
161
+ cloneSelector = clone(items[items.length-1]);
162
+
163
+ $(cloneSelector).css( 'left', (w*-1)+'px');
164
+
165
+ box.find('ul').append( cloneSelector );
166
+
167
+ items.unshift( $(cloneSelector) );
168
+
169
+ for( i=0; i<items.length; i++){
170
+
171
+ items[i].animate( {'left': w*i}, 500);
172
+
173
+ };
174
+
175
+ };
176
+
177
+ setTimeout( function(){
178
+
179
+ slideComplete(way);
180
+
181
+ }, 500 );
182
+
183
+ };
184
+
185
+
186
+
187
+ // スライド完了
188
+
189
+ function slideComplete(way){
190
+
191
+ // next
192
+
193
+ if ( way < 0 ){
194
+
195
+ items[0].remove();
196
+
197
+ items.shift();
198
+
199
+ }
200
+
201
+ // prev
202
+
203
+ else {
204
+
205
+ items[items.length-1].remove();
206
+
207
+ items.pop();
208
+
209
+ };
210
+
211
+ addEvent();
212
+
213
+ };
214
+
215
+
216
+
217
+ // イベント設定
218
+
219
+ function addEvent(){
220
+
221
+ prevBtn.on({
222
+
223
+ 'click': function(){
224
+
225
+ slide(1);
226
+
227
+ }
228
+
229
+ });
230
+
231
+ nextBtn.on({
232
+
233
+ 'click': function(){
234
+
235
+ slide(-1);
236
+
237
+ }
238
+
239
+ });
240
+
241
+ };
242
+
243
+
244
+
245
+ // イベント削除
246
+
247
+ function removeEvent(){
248
+
249
+ prevBtn.off('click');
250
+
251
+ nextBtn.off('click');
252
+
253
+ };
254
+
255
+
256
+
257
+ // 位置調整
258
+
259
+ function pos(){
260
+
261
+ $.each(items, function(index){
262
+
263
+ $(this).css('left', (w*index)+'px');
264
+
265
+ });
266
+
267
+ };
268
+
269
+
270
+
271
+ // リサイズ
272
+
273
+ function resize(){
274
+
275
+ w = target.parent().width();
276
+
277
+ h = Math.floor(w*imgH/imgW);
278
+
279
+ target.width(w).height(h);
280
+
281
+ box.find('ul').width(w).height(h);
282
+
283
+ pos();
284
+
285
+ };
286
+
287
+
288
+
289
+ // セットアップ
290
+
291
+ function setup(){
292
+
293
+ imgW = box.find('img').width();
294
+
295
+ imgH = box.find('img').height();
296
+
297
+ box.find('li').each(function(index){
298
+
299
+ items[index] = $(this);
300
+
301
+ });
302
+
303
+ $(window).on('resize', resize);
304
+
305
+ resize();
306
+
307
+ addEvent();
308
+
309
+ };
310
+
311
+
312
+
313
+ // 画像の読み込み完了
314
+
315
+ function loaded(){
316
+
317
+ if ( loadIndex != (srcList.length-1) ){
318
+
319
+ loadIndex++;
320
+
321
+ imgLoad();
322
+
157
323
  } else {
158
324
 
159
- cloneSelector = clone(items[items.length-1]);
325
+ setup();
160
-
161
- $(cloneSelector).css( {'left': w*i}, 500);
162
326
 
163
327
  };
164
328
 
165
- setTimeout(function(){
166
-
167
- slideComplete(way);
168
-
169
- });
170
-
171
- };
172
-
173
-
174
-
175
- // スライド完了
176
-
177
- function slideComplete(way){
178
-
179
- // next
180
-
181
- if ( way < 0 ){
182
-
183
- items[0].remove();
184
-
185
- items.shift();
186
-
187
- }
188
-
189
- // prev
190
-
191
- else {
192
-
193
- items[items.length-1].remove();
194
-
195
- items.pop();
196
-
197
- };
198
-
199
- addEvent();
200
-
201
- };
202
-
203
-
204
-
205
- // イベント設定
206
-
207
- function addEvent(){
208
-
209
- prevBtn.on('click', function(){
210
-
211
- slide(1);
212
-
213
- });
214
-
215
- nextBtn.on('click', function(){
216
-
217
- slide(-1);
218
-
219
- });
220
-
221
- };
222
-
223
-
224
-
225
- // イベント削除
226
-
227
- function removeEvent(){
228
-
229
- prevBtn.off('click');
230
-
231
- nextBtn.off('click');
232
-
233
- };
234
-
235
-
236
-
237
- // 位置調整
238
-
239
- function pos(){
240
-
241
- $.each(items, function(index){
242
-
243
- $(this).css('left', (w*index)+ 'px');
244
-
245
- });
246
-
247
- };
248
-
249
-
250
-
251
- // リサイズ
252
-
253
- function resize(){
254
-
255
- w = target.parent().width();
256
-
257
- h = Math.floor(w*imgH/imgW);
258
-
259
- target.width(w).height(h);
260
-
261
- box.find('ul').width(w).height(h);
262
-
263
- pos();
264
-
265
- };
266
-
267
-
268
-
269
- // セットアップ
270
-
271
- function setup(){
272
-
273
- imgW = box.find('img').width();
274
-
275
- imgH = box.find('img').height();
276
-
277
- box.find('li').each(function(index){
278
-
279
- items[index] = $(this);
280
-
281
- });
282
-
283
- $(window).on('resize', resize);
284
-
285
- resize();
286
-
287
- addEvent();
288
-
289
- };
290
-
291
-
292
-
293
- // 画像の読み込み完了
294
-
295
- function loaded(){
296
-
297
- if ( loadIndex != (srcList.length-1) ){
298
-
299
- loadIndex++;
300
-
301
- imgLoad();
302
-
303
- } else {
304
-
305
- setup();
306
-
307
- };
308
-
309
329
  };
310
330
 
311
331
 

6

コメントアウトの内容を修正

2019/11/22 10:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -76,10 +76,6 @@
76
76
 
77
77
  // .data() 要素のdata属性を取得します。引数が2つある場合、セットします。
78
78
 
79
- // .width() 要素の幅を取得します。
80
-
81
- // .length 要素の個数を取得します。
82
-
83
79
 
84
80
 
85
81
  "use strict";

5

セレクタを修正したことで、nextボタンをクリックイベントが実行できました。

2019/11/22 08:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -90,9 +90,9 @@
90
90
 
91
91
  var box = $('.slider-area'); // スライドする画像を括っているセレクタを格納
92
92
 
93
- var prevBtn = $('.slider-ctrl-btn prev'); // prevボタンのセレクタを格納した変数
93
+ var prevBtn = $('.slider-ctrl-btn.prev'); // prevボタンのセレクタを格納した変数
94
-
94
+
95
- var nextBtn = $('slider-ctrl-btn next'); // prevボタンのセレクタを格納した変数
95
+ var nextBtn = $('slider-ctrl-btn.next'); // prevボタンのセレクタを格納した変数
96
96
 
97
97
  var w = 0; // スライドショーの横幅
98
98
 

4

タイトル変更

2019/11/22 07:57

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【jQuery】スライドショーを実装してますが、クリックしてエラーが出ないにも関わらず動作しない理由を知りたいです…
1
+ 【jQuery】ローカル変数を用いてスライドショーを完成させたい
test CHANGED
File without changes

3

内容を修正しました。

2019/11/22 07:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,8 @@
1
- jQueryでスライドショー書いてまグローバル関数使わずローカル変数実装ましたが、ブラウザで動作しな状態です。
1
+ 現在、①右方向には右のボタンと移動し左方向には左のボタン押すと移動する。②右端いる状態で右のボタン押すと最初の位置に戻り、 左端にる状態で左のボタンを押すと最後の位置に移動するようにやりたいのですが、①の実装ができせん。現在の記述で改善が必要な部分がありましたらご指摘ただければと思います。
2
-
3
- どこを修正すれば良いかが分からないため、質問させていただきました。
2
+
4
-
5
- 以下、index.htmlとstyle.cssになります。
3
+ 現在の記述で解決したいです。
6
-
4
+
7
- よろしくお願いします。
5
+ よろしくお願いいたします。
8
6
 
9
7
 
10
8
 

2

タイトル変更

2019/11/22 06:56

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【jQuery】スライドショーを実装してますが、動作しない理由を知りたいです…
1
+ 【jQuery】スライドショーを実装してますが、クリックしてエラーが出ないにも関わらず動作しない理由を知りたいです…
test CHANGED
File without changes

1

タイトルを変更しました

2019/11/22 06:46

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【jQuery】スライドショーを実装してますが、どこでエラーが出てるかが分からないので教えていだきたいです…
1
+ 【jQuery】スライドショーを実装してますが、動作しない理由を知りたいです…
test CHANGED
File without changes