1個保持している(コンストラクターでcreateElementで作ってDocument.bodyなどのコンストラクターの引数で与えられたオブジェクトにApendChildで追加している)として、このOnclick属性で、このオブジェクトのメソッドである関数(prototypeで定義されている)を呼び出すには
Onclick= 以降をどのように記述したらいいのでしょうか?
このOnclick属性で、このオブジェクトのメソッドである関数
という部分に二つの「この」という表現がありますが、これはどのオブジェクトにかかっているのでしょう?
このOnclick属性 => JavaScript で記述されたオブジェクトが保持するHtmlのテキストボックスのonclick
このオブジェクトのメソッドである関数 => JavaScript で記述されたオブジェクトのメソッド
と解釈してみた回答が以下ですが、どうでしょうか?
コメントを解放しておくとこういった不確実なやり取りにポイントを消費しなくて済むので便利ですよ。
<html> <head> <title>-</title> </head> <body> <form> </form> <script type="text/javascript"> function Obj(container) { this.textbox = document.createElement('input'); this.textbox.type = 'text'; this.textbox.value = 'text box'; container.appendChild(this.textbox); } Obj.prototype.myMethod = function() { window.alert(this.textbox.value); } var o = new Obj(document.getElementsByTagName('form')[0]); o.textbox.onclick = function() { o.myMethod(); } </script> </body> </html>
あっ有難う!これでいけそうです。
質問の意図どうりの回答を頂きました。
なるほどオブジェクトの外から中の関数を指定すればいいんだ。