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

質問編集履歴

2

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

2020/04/18 02:56

投稿

takey
takey

スコア312

title CHANGED
File without changes
body CHANGED
@@ -54,6 +54,13 @@
54
54
  yambejp様の回答どおりに、`HTMLElement.prototype`に、`dispatchEvent`を実行する`trigger`を新しく定義する方法で解決しました。
55
55
 
56
56
  ```javascript
57
+ const sel_lang = document.getElementById("id-sel_lang");
58
+ sel_lang.addEventListener("change", function(){
59
+ console.log("変わりました");
60
+ });
61
+
62
+ /***追加・編集ここから***/
63
+
57
64
  HTMLElement.prototype.trigger = function(eStr) {
58
65
  var e = document.createEvent("HTMLEvents");
59
66
  e.initEvent(eStr, true, true );
@@ -66,12 +73,21 @@
66
73
  sel_lang.value = "js";
67
74
  sel_lang.trigger("change");
68
75
  });
76
+
77
+ /**追加・編集ここまで**/
69
78
  ```
70
79
 
71
80
  あるいは`HTMLElement`を汚したくない場合、`sel_lang`に追加する方法でも解決できました。
72
81
 
73
82
  ```javascript
83
+ const sel_lang = document.getElementById("id-sel_lang");
84
+ sel_lang.addEventListener("change", function(){
85
+ console.log("変わりました");
86
+ });
87
+
88
+ /***追加・編集ここから***/
89
+
74
- sel_lang.trigger = function(eStr){
90
+ sel_lang.trigger = function(eStr) {
75
91
  var e = document.createEvent("HTMLEvents");
76
92
  e.initEvent(eStr, true, true );
77
93
  this.dispatchEvent(e);
@@ -83,4 +99,6 @@
83
99
  sel_lang.value = "js";
84
100
  sel_lang.trigger("change");
85
101
  });
102
+
103
+ /***追加・編集ここまで***/
86
104
  ```

1

解決後のコードを記載

2020/04/18 02:56

投稿

takey
takey

スコア312

title CHANGED
File without changes
body CHANGED
@@ -48,4 +48,39 @@
48
48
 
49
49
  という状況です。
50
50
 
51
- なにか良い方法がありますでしょうか?よろしくお願いします。
51
+ なにか良い方法がありますでしょうか?よろしくお願いします。
52
+
53
+ # 【解決後】最終的なコード
54
+ yambejp様の回答どおりに、`HTMLElement.prototype`に、`dispatchEvent`を実行する`trigger`を新しく定義する方法で解決しました。
55
+
56
+ ```javascript
57
+ HTMLElement.prototype.trigger = function(eStr) {
58
+ var e = document.createEvent("HTMLEvents");
59
+ e.initEvent(eStr, true, true );
60
+ this.dispatchEvent(e);
61
+ }
62
+
63
+ const btn = document.getElementById("id-btn");
64
+ btn.addEventListener("click", function(){
65
+ if (sel_lang.value === "js") { return; }
66
+ sel_lang.value = "js";
67
+ sel_lang.trigger("change");
68
+ });
69
+ ```
70
+
71
+ あるいは`HTMLElement`を汚したくない場合、`sel_lang`に追加する方法でも解決できました。
72
+
73
+ ```javascript
74
+ sel_lang.trigger = function(eStr){
75
+ var e = document.createEvent("HTMLEvents");
76
+ e.initEvent(eStr, true, true );
77
+ this.dispatchEvent(e);
78
+ }
79
+
80
+ const btn = document.getElementById("id-btn");
81
+ btn.addEventListener("click", function(){
82
+ if (sel_lang.value === "js") { return; }
83
+ sel_lang.value = "js";
84
+ sel_lang.trigger("change");
85
+ });
86
+ ```