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

回答編集履歴

1

chousei

2019/11/15 05:31

投稿

yambejp
yambejp

スコア118102

answer CHANGED
@@ -1,1 +1,85 @@
1
- DOMContentLoaded処理が抜けているので、jQueryオブジェクトがつかめてないのでは?
1
+ DOMContentLoaded処理が抜けているので、jQueryオブジェクトがつかめてないのでは?
2
+
3
+
4
+ # sample
5
+ ```javascript
6
+ <style>
7
+ * {
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+ .wrapper {
12
+ width: 350px;
13
+ }
14
+ .button_area {
15
+ background-color: #000;
16
+ height: 100px;
17
+ display: flex;
18
+ justify-content: center;
19
+ }
20
+ .button_area div {
21
+ align-self: center;
22
+ }
23
+ .button_area div + div {
24
+ margin-left: 20px;
25
+ }
26
+ .image_wrapper {
27
+ display: flex;
28
+ height: 200px;
29
+ }
30
+ .none {
31
+ display: none;
32
+ }
33
+ </style>
34
+ <script>
35
+ class Photoview {
36
+ constructor(){
37
+ document.addEventListener("DOMContentLoaded",()=>{
38
+ this.el = document.querySelector('.image_wrapper img');
39
+ this.images = [
40
+ Object.assign(new Image(),{src:'https://fakeimg.pl/350x200/ff0000/?text=1'}),
41
+ Object.assign(new Image(),{src:'https://fakeimg.pl/350x200/ff0000/000?text=2'}),
42
+ Object.assign(new Image(),{src:'https://fakeimg.pl/350x200/ff0000,128/000,255?text=3'}),
43
+ ];
44
+ this.index = 0;
45
+ this.nextBtn = document.querySelector('.next');
46
+ this.prevBtn = document.querySelector('.prev');
47
+ this.handleEvent();
48
+ this.displayImg();
49
+ });
50
+ }
51
+ handleEvent() {
52
+ this.nextBtn.addEventListener("click",()=>{
53
+ this.next();
54
+ });
55
+ this.prevBtn.addEventListener("click",()=>{
56
+ this.prev();
57
+ });
58
+ }
59
+ next() {
60
+ this.index++;
61
+ if(this.index>this.images.length-1) this.index=0;
62
+ this.displayImg();
63
+ }
64
+ prev() {
65
+ this.index--;
66
+ if(this.index<0) this.index=this.images.length-1;
67
+ this.displayImg();
68
+ }
69
+ displayImg() {
70
+ this.el.src= this.images[ this.index ].src;
71
+ }
72
+ }
73
+ const Photoview_ins = new Photoview;
74
+ </script>
75
+
76
+ <div class="wrapper">
77
+ <figure class="image_wrapper">
78
+ <img src="https://fakeimg.pl/350x200/ff0000/?text=1">
79
+ </figure>
80
+ <div class="button_area">
81
+ <div class="prev"><img src="https://fakeimg.pl/50x50/?text=prev"></div>
82
+ <div class="next"><img src="https://fakeimg.pl/50x50/?text=next"></div>
83
+ </div>
84
+ </div>
85
+ ```