2007年1月2日火曜日

javascriptでオブジェクトのイベントに関数を設定したい

javascriptでHTMLのオブジェクトを生成した時に同時にイベントに関数を設定する処理
をちょっと勉強しました。

最初はあんまりごちゃごちゃ考えるのがいやだったので、シンプルなライブラリ
bytefxを使ってました。

記述的には以下になります。

//element:イベントを追加したい要素
//eventName:onclickとか
//funcValue:実行したい関数
bytefx.$event(element,eventName,function(){funcValue});

でもこれだと連続で実行した場合に引数の参照が期待した通りにならない場合
が出てきて困っちゃいました。
具体的に言うと

for(cnt=0;cnt<8;cnt++){

    bytefx.$event(item[cnt],"onclick",function(){alert(cnt)});

}

上記の記述だとonclickで各itemをクリックした場合はそれぞれ1,2,3とか設定した数字がalertで出ると思うんですが、結果はどれをクリックしても7が出てくる。eventの前の$がポイントなのかな、、、

これではダメなんでこっちの形で対応しました。あぁ汚いんだよなぁ、、、

for(cnt=0;cnt<8;cnt++){

if (window.createPopup)

  {

    item[cnt].attachEvent("onclick",function(){alert(cnt)});

  }else{

    item[cnt].setAttribute("onmouseover","alert('" + cnt + "')");

  }
}

0 件のコメント :

コメントを投稿