質問編集履歴

2

追加・編集分がどこからどこまでなのかわかりやすく修正

2020/04/18 02:56

投稿

takey
takey

スコア312

test CHANGED
File without changes
test CHANGED
@@ -110,6 +110,20 @@
110
110
 
111
111
  ```javascript
112
112
 
113
+ const sel_lang = document.getElementById("id-sel_lang");
114
+
115
+ sel_lang.addEventListener("change", function(){
116
+
117
+ console.log("変わりました");
118
+
119
+ });
120
+
121
+
122
+
123
+ /***追加・編集ここから***/
124
+
125
+
126
+
113
127
  HTMLElement.prototype.trigger = function(eStr) {
114
128
 
115
129
  var e = document.createEvent("HTMLEvents");
@@ -134,6 +148,10 @@
134
148
 
135
149
  });
136
150
 
151
+
152
+
153
+ /**追加・編集ここまで**/
154
+
137
155
  ```
138
156
 
139
157
 
@@ -144,7 +162,21 @@
144
162
 
145
163
  ```javascript
146
164
 
165
+ const sel_lang = document.getElementById("id-sel_lang");
166
+
167
+ sel_lang.addEventListener("change", function(){
168
+
169
+ console.log("変わりました");
170
+
171
+ });
172
+
173
+
174
+
175
+ /***追加・編集ここから***/
176
+
177
+
178
+
147
- sel_lang.trigger = function(eStr){
179
+ sel_lang.trigger = function(eStr) {
148
180
 
149
181
  var e = document.createEvent("HTMLEvents");
150
182
 
@@ -168,4 +200,8 @@
168
200
 
169
201
  });
170
202
 
203
+
204
+
205
+ /***追加・編集ここまで***/
206
+
171
- ```
207
+ ```

1

解決後のコードを記載

2020/04/18 02:56

投稿

takey
takey

スコア312

test CHANGED
File without changes
test CHANGED
@@ -99,3 +99,73 @@
99
99
 
100
100
 
101
101
  なにか良い方法がありますでしょうか?よろしくお願いします。
102
+
103
+
104
+
105
+ # 【解決後】最終的なコード
106
+
107
+ yambejp様の回答どおりに、`HTMLElement.prototype`に、`dispatchEvent`を実行する`trigger`を新しく定義する方法で解決しました。
108
+
109
+
110
+
111
+ ```javascript
112
+
113
+ HTMLElement.prototype.trigger = function(eStr) {
114
+
115
+ var e = document.createEvent("HTMLEvents");
116
+
117
+ e.initEvent(eStr, true, true );
118
+
119
+ this.dispatchEvent(e);
120
+
121
+ }
122
+
123
+
124
+
125
+ const btn = document.getElementById("id-btn");
126
+
127
+ btn.addEventListener("click", function(){
128
+
129
+ if (sel_lang.value === "js") { return; }
130
+
131
+ sel_lang.value = "js";
132
+
133
+ sel_lang.trigger("change");
134
+
135
+ });
136
+
137
+ ```
138
+
139
+
140
+
141
+ あるいは`HTMLElement`を汚したくない場合、`sel_lang`に追加する方法でも解決できました。
142
+
143
+
144
+
145
+ ```javascript
146
+
147
+ sel_lang.trigger = function(eStr){
148
+
149
+ var e = document.createEvent("HTMLEvents");
150
+
151
+ e.initEvent(eStr, true, true );
152
+
153
+ this.dispatchEvent(e);
154
+
155
+ }
156
+
157
+
158
+
159
+ const btn = document.getElementById("id-btn");
160
+
161
+ btn.addEventListener("click", function(){
162
+
163
+ if (sel_lang.value === "js") { return; }
164
+
165
+ sel_lang.value = "js";
166
+
167
+ sel_lang.trigger("change");
168
+
169
+ });
170
+
171
+ ```