回答編集履歴

1

ソース修正

2021/08/31 13:01

投稿

退会済みユーザー
test CHANGED
@@ -49,3 +49,103 @@
49
49
 
50
50
 
51
51
  うまくいくことを祈ってるで〜
52
+
53
+
54
+
55
+
56
+
57
+ **続き:**
58
+
59
+
60
+
61
+ よく見たら、ここがかなり怪しげなコードになってるゆうところがありましたわ。それは以下の部分
62
+
63
+
64
+
65
+ ```javascript
66
+
67
+ .then(listHtml => {
68
+
69
+ let asideWrapper = document.getElementById("aside-wrapper");
70
+
71
+ asideWrapper.innerHTML = listHtml;
72
+
73
+ document.addEventListener("load", () => {
74
+
75
+ const region = document.getElementsByClassName('.region');
76
+
77
+ for (let i = 0; i < region.length; i++) {
78
+
79
+ let regionEach = region[i];
80
+
81
+ let content = regionEach.nextElementSibling;
82
+
83
+ regionEach.addEventListener('click', () => {
84
+
85
+ regionEach.classList.toggle('is-active');
86
+
87
+ content.classList.toggle('is-open');
88
+
89
+ });
90
+
91
+ }
92
+
93
+ })
94
+
95
+ });
96
+
97
+ ```
98
+
99
+ の中の
100
+
101
+ ```javascript
102
+
103
+ document.addEventListener("load", () => {
104
+
105
+ ・・・
106
+
107
+ });
108
+
109
+ ```
110
+
111
+ の部分。これ、なんでloadハンドラをここでaddEventListenerしてるんや? っていう。これだと、 loadのリスナーとして設定している関数`() => { ・・・ }`  は、一度も呼ばれないと思います。なので、試しに以下の2行を削除してみるとどないになりますやろ?
112
+
113
+
114
+
115
+ ```diff
116
+
117
+ .then(listHtml => {
118
+
119
+ let asideWrapper = document.getElementById("aside-wrapper");
120
+
121
+ asideWrapper.innerHTML = listHtml;
122
+
123
+ - document.addEventListener("load", () => {
124
+
125
+ const region = document.getElementsByClassName('.region');
126
+
127
+ for (let i = 0; i < region.length; i++) {
128
+
129
+ let regionEach = region[i];
130
+
131
+ let content = regionEach.nextElementSibling;
132
+
133
+ regionEach.addEventListener('click', () => {
134
+
135
+ regionEach.classList.toggle('is-active');
136
+
137
+ content.classList.toggle('is-open');
138
+
139
+ });
140
+
141
+ }
142
+
143
+ - })
144
+
145
+ });
146
+
147
+ ```
148
+
149
+
150
+
151
+ 上の2行を削除すると、間に入っていた関数本体部分をインデント1個分左に寄せることになります。この修正で、すべてうまくいくかは分かりませんが、少なくとも、Promise の then に設定するコールバックの中に、documentのload リスナー関数を設定しても、設定した関数が呼ばれることは無いと思われるので、上記2行の削除は試してみる価値はあると思うてます。