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

回答編集履歴

1

解説を追加

2018/03/27 21:11

投稿

defghi1977
defghi1977

スコア4756

answer CHANGED
@@ -1,4 +1,38 @@
1
1
  上の`pageNum()`は`prev/next`ボタンクリック時のページ番号更新処理
2
2
  (イベントにまつわるもの)
3
3
  下の`pageNum()`はスライドショー開始時の初期ページ番号の表示処理
4
- (WEBページ表示直後に実行しているもの)
4
+ (WEBページ表示直後に実行しているもの)
5
+
6
+ ---
7
+
8
+ コードにインデントをつけると`pageNum`関数を呼び出しているところが**全く別**であることが判ります. つまり, `pageNum`関数を**2度連続で呼び出してはいません**.
9
+
10
+ ```JavaScript
11
+ var images = [...];
12
+
13
+ var current = 0;
14
+
15
+ var pageNum = function() {
16
+ document.getElementById('page').textContent = (current + 1) + '/' + images.length;
17
+ }
18
+
19
+ var changeImage = function(num){
20
+ if(current + num >= 0 && current + num < images.length){
21
+ current += num;
22
+ document.getElementById('main_image').src = images[current];
23
+
24
+ pageNum();//ここは将来画像送りした際に呼び出される部分
25
+ }
26
+ };
27
+
28
+ pageNum();//ここはページロード直後に呼び出される部分
29
+
30
+ document.getElementById('prev').onclick = function() {
31
+ changeImage(-1);
32
+ };
33
+
34
+ document.getElementById('next').onclick = function() {
35
+ changeImage(1);
36
+ };
37
+
38
+ ```