• 追加された行はこの色です。
  • 削除された行はこの色です。
* onclickで割り当てるハンドラ関数に引数を渡す [#q088315c]

引数無しのハンドラ関数割り当て
** 引数無しのハンドラ関数割り当て [#mbbb41d8]
 document.getElementById('foo').onclick = func;

引数有りのハンドラ関数割り当て1
** 引数有りのハンドラ関数割り当て1 [#g9e5212d]
目的の関数を無名関数で包んで割り当てる。
 document.getElementById('foo').onclick = function () { func('hello'); };
引数有りのハンドラ関数割り当て2
 for ( var 1 = 0; i < 3; i++ ) {
   document.getElementById('foo').onclick = (function(num) { return func(num) }; })(i);
** 引数有りのハンドラ関数割り当て2 [#a8ad3f3e]

変数を引数にしたい場合、以下のようにしても、ハンドラ関数が実行される(foo0がonclickされる)際にその変数(n)が評価されるので、nはfoo0が期待するような値として得られない。

 for ( var n = 0; n < 3; n++ ) {
  document.getElementById('foo' + n).onclick = function () { func(n); };
 }

従って、以下のようにハンドラ関数をさらに無名関数で包んで割り当てる。nはイベントに割り当てられた時点で評価され、numはその値を得る事が出来る。
 for ( var n = 0; n < 3; n++ ) {
   document.getElementById('foo' + n ).onclick = (function (num) { return func(num) }; })(n);
 }



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS