0

私は現在これに取り組んでいます:

  • 「アウト」のdivと「イン」のボタンがあります。
  • ボタンをクリックし、div "extra" を作成し、ボタン "extra_b" をクリックします。
  • 同時に、「アウト」と「イン」が隠れます。
  • 「extra_b」をクリックすると、「out」と「in」が表示され、DELETE「extra」とボタン「extra_b」

サンプルは次のとおりです

動作しません。コンソールを確認したところ、おそらく次のように表示されます。

inner.onclick=function(){ add(outer[i]) };

現在の out 要素のオブジェクトを関数に正しく渡すことができません:

function add(objectIn){
}

要素を再帰関数に渡す方法を教えてください。また、現在のコードを修正して正しく実行するにはどうすればよいですか?

どうもありがとう!

4

2 に答える 2

0

これはJavaScript でよくある問題です。onclick イベントをバインドしているときは、 の現在の値を使用するのではiなく、クリックが発生したときに の最後の値iが使用されます。

だからあなたはしなければなりません:

inner.onclick= (function(i){ return function(){ add(outer[i]) })(i);

于 2013-06-18T08:49:37.097 に答える
0

Darhazer が提案したような新しいクロージャーを作成するか、jQuery を使用してもかまわない場合は jQuery.proxy() を使用できます。

inner.onclick = $.proxy(add, window, outer[i]);
于 2013-06-18T09:06:32.353 に答える