質問編集履歴
2
クロージャを導入して一部コード修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,13 +10,29 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
<追記>
|
14
|
+
|
15
|
+
一部修正しました。関数内に変数を閉じ込めると関数実行の度に変数が宣言され、値がリセットされてしまっていると考え、クロージャにて再度実装しました。
|
16
|
+
|
17
|
+
|
18
|
+
|
13
19
|
### 発生した問題・解決したい問題
|
14
20
|
|
15
|
-
変数を関数スコープかイベントの中に閉じ込めたいのですが、イベント内・関数内に閉じようとしたらうまく動作しない。
|
21
|
+
~~変数を関数スコープかイベントの中に閉じ込めたいのですが、イベント内・関数内に閉じようとしたらうまく動作しない。~~
|
16
22
|
|
17
23
|
関数・イベントの外で宣言したら動作しました。
|
18
24
|
|
19
25
|
おかしいところのアドバイスを頂きたいです。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
<追記>
|
30
|
+
|
31
|
+
クロージャにて一部コード修正しましたが、機能しません。
|
32
|
+
|
33
|
+
クロージャの扱いが間違っているのか、その他の要因があるのか、アドバイスを頂きたいです。
|
34
|
+
|
35
|
+
|
20
36
|
|
21
37
|
|
22
38
|
|
@@ -50,31 +66,43 @@
|
|
50
66
|
|
51
67
|
$(function(){
|
52
68
|
|
53
|
-
|
69
|
+
/**
|
54
70
|
|
55
|
-
|
71
|
+
*スライド全体を横に移動させる
|
56
72
|
|
57
|
-
|
73
|
+
*左端までいくと最後の画像に移動する
|
58
74
|
|
59
|
-
|
75
|
+
*右端までいくと最初の画像に戻る
|
60
76
|
|
61
|
-
|
77
|
+
*
|
62
78
|
|
63
|
-
|
79
|
+
*@param {num} current : 現在地の増減
|
64
80
|
|
65
|
-
|
81
|
+
*/
|
66
82
|
|
83
|
+
function slideShow(){
|
67
84
|
|
85
|
+
let slideWidth = $('.slider-list').find('li').width(),
|
68
86
|
|
69
|
-
|
87
|
+
slideNum = $('.slider-list').find('li').length,
|
70
88
|
|
71
|
-
|
89
|
+
slideListWidth = slideWidth * slideNum,
|
72
90
|
|
73
|
-
|
91
|
+
slideCurrent = 0,
|
74
92
|
|
75
|
-
|
93
|
+
myObj = new Object();
|
76
94
|
|
95
|
+
/**
|
96
|
+
|
97
|
+
*スライド全体の幅を挿入する
|
98
|
+
|
99
|
+
*/
|
100
|
+
|
101
|
+
$('.slider-list').css('width',slideListWidth);
|
102
|
+
|
103
|
+
myObj.slideFunc = function (current){
|
104
|
+
|
77
|
-
n
|
105
|
+
current;
|
78
106
|
|
79
107
|
if(slideCurrent < 0){
|
80
108
|
|
@@ -96,92 +124,46 @@
|
|
96
124
|
|
97
125
|
}
|
98
126
|
|
127
|
+
myObj.getCurrent = function (){
|
128
|
+
|
129
|
+
return slideCurrent;
|
130
|
+
|
131
|
+
}
|
132
|
+
|
133
|
+
return myObj;
|
134
|
+
|
135
|
+
}
|
136
|
+
|
137
|
+
let slideCount = slideShow();
|
99
138
|
|
100
139
|
|
101
|
-
$('.slider-area').find('button').on('click',function(){ //ボタンクリック時のイベント
|
102
140
|
|
103
|
-
|
141
|
+
/**
|
104
142
|
|
105
|
-
|
143
|
+
*クリックイベント
|
106
144
|
|
107
|
-
|
145
|
+
*ボタンクリックで進む・戻る
|
108
146
|
|
109
|
-
|
147
|
+
*/
|
110
148
|
|
111
|
-
|
149
|
+
$('.slider-area').find('button').on('click',function(){
|
112
150
|
|
113
|
-
|
151
|
+
let currentCount = slideCount.getCurrent();
|
114
152
|
|
115
|
-
|
153
|
+
if($(this).hasClass('next')){
|
116
154
|
|
155
|
+
slideCount.slideFunc(currentCount++)
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
else{
|
160
|
+
|
161
|
+
slideCount.slideFunc(currentCount--)
|
162
|
+
|
163
|
+
}
|
164
|
+
|
117
|
-
|
165
|
+
});
|
118
166
|
|
119
167
|
});
|
120
168
|
|
121
169
|
```
|
122
|
-
|
123
|
-
↑動作しない
|
124
|
-
|
125
|
-
```javascript
|
126
|
-
|
127
|
-
$(function(){
|
128
|
-
|
129
|
-
var slideWidth = $('.slider-list').find('li').width(), //スライド一つの幅
|
130
|
-
|
131
|
-
slideNum = $('.slider-list').find('li').length, //スライドの数
|
132
|
-
|
133
|
-
slideListWidth = slideWidth * slideNum, //スライド全体の幅
|
134
|
-
|
135
|
-
slideCurrent = 0; //スライドの現在地
|
136
|
-
|
137
|
-
$('.slider-list').css('width',slideListWidth);
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
function slide(num){ //スライドショーの関数
|
142
|
-
|
143
|
-
num
|
144
|
-
|
145
|
-
if(slideCurrent < 0){
|
146
|
-
|
147
|
-
slideCurrent = slideNum -1;
|
148
|
-
|
149
|
-
}
|
150
|
-
|
151
|
-
else if(slideCurrent > slideNum -1){
|
152
|
-
|
153
|
-
slideCurrent = 0;
|
154
|
-
|
155
|
-
}
|
156
|
-
|
157
|
-
$('.slider-list').animate({
|
158
|
-
|
159
|
-
left : slideCurrent * -slideWidth
|
160
|
-
|
161
|
-
});
|
162
|
-
|
163
|
-
}
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
$('.slider-area').find('button').on('click',function(){ //ボタンクリック時のイベント
|
168
|
-
|
169
|
-
if($(this).hasClass('next')){
|
170
|
-
|
171
|
-
slide(slideCurrent++)
|
172
|
-
|
173
|
-
}
|
174
|
-
|
175
|
-
else{
|
176
|
-
|
177
|
-
slide(slideCurrent--)
|
178
|
-
|
179
|
-
}
|
180
|
-
|
181
|
-
});
|
182
|
-
|
183
|
-
});
|
184
|
-
|
185
|
-
```
|
186
|
-
|
187
|
-
↑動作する
|
1
ご指摘いただいた点の本文を修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
### 発生した問題・解決したい問題
|
14
14
|
|
15
|
-
|
15
|
+
変数を関数スコープかイベントの中に閉じ込めたいのですが、イベント内・関数内に閉じようとしたらうまく動作しない。
|
16
16
|
|
17
|
-
|
17
|
+
関数・イベントの外で宣言したら動作しました。
|
18
18
|
|
19
19
|
おかしいところのアドバイスを頂きたいです。
|
20
20
|
|