4

これを置き換えたい:

for( var i=0; i<elementArray.length; i++ )
   elementArray[i].click(function(){
      console.log("element clicked - selectedElementIndex = " + i);                    
   });

次のようなもので:

for( var i=0; i<elementArray.length; i++ )
    elementArray[i].click( onElementClick(i) );

function onElementClick( i ){
   console.log("element clicked - selectedElementIndex = " + i ); 
}

どうすればできますか?:)

4

4 に答える 4

4

(私が知る限り) クリック ハンドラーは引数を取ることができないため、スコープ内の変数を使用して関数を作成する必要があります。これは次のようになります。

for( ... ) {
    elementArray[i].click( onElementClick(i) );
    ...
}

function onElementClick( id ){
   return function() {
       console.log("element clicked - selectedElementIndex = " + id ); 
   }
}
于 2012-11-22T00:24:26.893 に答える
1

交換:

elementArray[i].click( onElementClick(i) );

と:

elementArray[i].click( onElementClick(elementArray[i].id));
于 2012-11-22T00:20:59.160 に答える