回答編集履歴

2

allついてないやん

2019/02/04 08:12

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```JavaScript
10
10
 
11
- const controllers = document.querySelector(".controller");
11
+ const controllers = document.querySelectorAll(".controller");
12
12
 
13
13
  const controllerStyles = ["translateX(960px)", "translateX(0)", "translateX(-960px)"];
14
14
 

1

明らかにキーでアクセスしようとしてたわ

2019/02/04 08:12

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,6 +1,8 @@
1
- controllerクラスのメソッドがそうゴロゴロ出とは思えないから、
1
+ Allのついてない[querySelector](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector)と混同してる感じですね。
2
2
 
3
- Allついない[querySelector](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector)と間違えただけ説もありそう
3
+ 各々コントローラに対し個別にイベントを登録する必要があります
4
+
5
+ 例えばこんな感じ
4
6
 
5
7
 
6
8
 
@@ -8,16 +10,30 @@
8
10
 
9
11
  const controllers = document.querySelector(".controller");
10
12
 
13
+ const controllerStyles = ["translateX(960px)", "translateX(0)", "translateX(-960px)"];
11
14
 
12
15
 
13
- controllers.addEventListener("click", function() {
14
16
 
15
- controllers[0].style("transform", "translateX(960px)");
17
+ controllers.forEach(function (it) {
16
18
 
17
- controllers[1].style("transform", "translateX(0)");
19
+ it.addEventListener("click", function() {
18
20
 
21
+ controllerStyles.forEach(function (translate, i) {
22
+
19
- controllers[2].style("transform", "translateX(-960px)");
23
+ controllers[i].style("transform", translate);
24
+
25
+ }
26
+
27
+ });
20
28
 
21
29
  });
22
30
 
23
31
  ```
32
+
33
+
34
+
35
+ なお、querySelectorAllはforEachを持っているはずなので基本的にはこの記述で良いのですが、
36
+
37
+ 何故かIE11だけquerySelectorAllの結果として帰ってくるNodeListがforEachメソッドを所持していません。
38
+
39
+ 実践的にはpapinianusさんの回答に寄せた方が良いですね。