質問編集履歴

1

読み手からしてわかりづらかったため、具体的に現象をまとめました。

2020/08/10 16:11

投稿

kakedashi009
kakedashi009

スコア5

test CHANGED
@@ -1 +1 @@
1
- JavaScriptでリサイズの度に処理を実行したい
1
+ JavaScriptでリサイズの度にページ更新する関数を実行したい
test CHANGED
@@ -1,16 +1,42 @@
1
- 在スライドショーを用いて背景画像をスライドさせているのですが、画面幅をリサイズするとイベントが起きず、更新ないとスライドショーが始まらないという状態だっため、addEventListnerを用て、リサイズをした際に関数を呼び出す形でリサイズの度にスライドショー開始の処理を行いたいのですが、やはりリサイズした時に処理が行われず、更新しないスライドショーが始まりません。
1
+ ### 前提・実現したい
2
2
 
3
- これは何が原因なのでしか?
3
+ 現在JavaScriptにてページを読み込んだ際に背景画像が遷移するスライドショーを実装しようとしており、実際にモバイル版とPC、タブレット版に分けて画像を変えて実装したのですが、手動で画面幅をリサイズした際にスライドショーが始まらない現象が起っている(リサイズ後に更新すば正常に動作する)を修正し、手動リサイズた際にJavaScriptの仕組みとして更新するよに処理し、スライドショーを開始させたいです。
4
+
5
+
6
+
7
+ ### 試したこと
8
+
9
+ 上記のような機能を実装するため、
10
+
11
+ function reload (){ //ページを更新するための関数
12
+
13
+ document.location.reload;
14
+
15
+ };
16
+
17
+ という関数を定義し、
18
+
19
+ window.onresize =reload;
20
+
21
+ の構文を用いてリサイズされた際にページを更新するような処理を記述したのですが、変わらずリサイズしてもスライドショーが始まらないです。
22
+
23
+
24
+
25
+
26
+
27
+ ### 該当のソースコード
4
28
 
5
29
 
6
30
 
7
31
  ```JavaScript
8
32
 
33
+
34
+
9
35
  // スライドショー関連
10
36
 
11
37
  // 宣言
12
38
 
13
- const images =[
39
+ const images =[
14
40
 
15
41
  'img/image05.png',
16
42
 
@@ -44,11 +70,15 @@
44
70
 
45
71
  const spImage =document.getElementById('spImage');
46
72
 
47
- // ページがロードされ際に行うイベント
73
+ function reload (){ //ページを更新するめの関数
48
74
 
49
- if (matchMedia('(max-width: 600px)').matches) {
75
+ document.location.reload;
50
76
 
77
+ };
78
+
51
- // ウィンドウサイズが600px以下(マホ版)とき
79
+ // 以下スライドショーための処理
80
+
81
+ if (matchMedia('(max-width: 600px)').matches) { //ウィンドウサイズが600px以下(スマホ版)の時
52
82
 
53
83
  window.addEventListener('load' , function slideChange2(){ // 定期的に画像を更新する関数
54
84
 
@@ -86,9 +116,9 @@
86
116
 
87
117
  });
88
118
 
89
- } else {
119
+ // window.addEventListener('resize' , reload ());
90
120
 
91
- // それ以外(PC版とタブレット版)
121
+ } else { // それ以外(PC版とタブレット版)
92
122
 
93
123
  window.addEventListener('load' , function slideChange(){
94
124
 
@@ -126,98 +156,10 @@
126
156
 
127
157
  });
128
158
 
159
+ // window.addEventListener('resize' , reload ());
160
+
129
161
  };
130
162
 
131
-
132
-
133
- if (matchMedia('(max-width: 600px)').matches) {
134
-
135
- // ウィンドウサイズが600px以下(スマホ版)のとき
136
-
137
- window.addEventListener('resize' , function slideChange2(){ // 定期的に画像を更新する関数
138
-
139
- if (counter == spImages.length-1){ // 最後の画像まで表示したのなら
140
-
141
- counter=0; // 最初の画像に戻す
142
-
143
- spImage.classList.add('fadein-out');
144
-
145
- setInterval(() => {
163
+ window.onresize =reload;
146
-
147
- spImage.classList.remove('fadein-out')
148
-
149
- }, 1000);
150
-
151
- }
152
-
153
- else{ // 最後の画像まで表示していないのなら
154
-
155
- counter++; // 次の画像へ
156
-
157
- spImage.classList.add('fadein-out');
158
-
159
- setInterval(() => {
160
-
161
- spImage.classList.remove('fadein-out')
162
-
163
- }, 1000);
164
-
165
- }
166
-
167
- setTimeout( slideChange2 , 10000); // 10秒周期に画像を更新する
168
-
169
- spImage.src = spImages[counter]; // 次の画像を表示する )
170
-
171
- });
172
-
173
- } else {
174
-
175
- // それ以外(PC版とタブレット版)
176
-
177
- window.addEventListener('resize' , function slideChange(){
178
-
179
- if (counter == images.length-1){ // 最後の画像まで表示したのなら
180
-
181
- counter=0; // 最初の画像に戻す
182
-
183
- mainImage.classList.add('fadein-out');
184
-
185
- setInterval(() => {
186
-
187
- mainImage.classList.remove('fadein-out')
188
-
189
- }, 1000);
190
-
191
- }
192
-
193
- else{ // 最後の画像まで表示していないのなら
194
-
195
- counter++; // 次の画像へ
196
-
197
- mainImage.classList.add('fadein-out');
198
-
199
- setInterval(() => {
200
-
201
- mainImage.classList.remove('fadein-out')
202
-
203
- }, 1000);
204
-
205
- }
206
-
207
- setTimeout( slideChange , 10000); // 10秒周期に画像を更新する
208
-
209
- mainImage.src = images[counter]; // 次の画像を表示する
210
-
211
- });
212
-
213
- };
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
164
 
223
165
  ```