回答編集履歴

2 コメントをより判りやすく修正

hy3

hy3 score 594

2015/08/21 16:03  投稿

confirmをwindow.onloadの外で定義しても何も問題ないと思いますが、どうしても関数内で完結させたいのであればinnerHTMLを使わずにDOMオブジェクトとして扱って、onclickプロパティを利用するのが良いかと思います。
```javascript
window.onload = function() {
 var msg = document.createElement("input");
 msg.id = "msg";
 msg.setAttribute("type", "text");
 var button = document.createElement("input");
 button.setAttribute("type", "button");
 button.value = "確認";
 
 // ここでonclickイベントへ関数をバインドする
 // ここで確認ボタンのonclickイベントへ関数をバインドする
 button.onclick = function() {
   alert(msg.value)
 }
 
 document.getElementById("result").appendChild(msg);
 document.getElementById("result").appendChild(button);
}
```
1 コードを少々リファクタリングした

hy3

hy3 score 594

2015/08/21 16:02  投稿

confirmをwindow.onloadの外で定義しても何も問題ないと思いますが、どうしても関数内で完結させたいのであればinnerHTMLを使わずにDOMオブジェクトとして扱って、onclickプロパティを利用するのが良いかと思います。
```javascript
window.onload = function() {
 var msg = document.createElement("input");
 msg.id = "msg";  
 msg.setAttribute("type", "text");  
 
 var button = document.createElement("input");
   
 msg.setAttribute("type", "text");  
 msg.setAttribute("id", "msg");  
 button.setAttribute("type", "button");
 button.value = "確認";
 
 // ここでonclickイベントへ関数をバインドする
 button.onclick = function() {
   alert(msg.value)
 }
 
 document.getElementById("result").appendChild(msg);
 document.getElementById("result").appendChild(button);
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る