0

jQueryや他のJavaScriptフレームワークは使用せず、JavaScriptのみを使用しています。

次のような 1 つのアンカー タグを作成しました。

var _a = document.createElement('a');

このタグに onclick を追加したいと思います。私は次のことを試しました:

_a.onclick = function(){ mycode(id); }

関数はそれに適用されますが、アンカータグはループで作成されます...mycode(id)常にループの最後の値を取ります。

誰でもこれで私を助けることができますか?

4

3 に答える 3

2

おそらく、次のようなハンドラーを作成する関数が必要です。

function createHandler( id ) {
  return function(){ mycode( id ); };
}

そして、ループ内で割り当てます

for ( i= ... ) {
   _a.onclick = createHandler( i );
}

一方、要素にイベントを追加するにはaddEventListener()( MDN docu ) を使用する必要があります。

_a.addEventListener( 'click', createHandler( i ) );
于 2012-08-20T15:12:05.443 に答える
2
for(var id = 0; id < 10; id++){
    var _a = document.createElement('a');
    _a.onclick = (function(id){
        return function (){
            mycode(id);
        }
    })(id);
}

それはそれを修正する必要があります。

于 2012-08-20T15:12:10.557 に答える
1

以下を試してください:

_a.onclick = (function(id){return function(){ mycode(id); }})(id);
于 2012-08-20T15:11:52.010 に答える