でイベントを割り当てますイメージをクリックするたびにloadMainImage(imgPath)関数を起動しますか?は動的に私はjavascriptのクラスを以下しているjavascriptオブジェクト
ありがとうございます!
でイベントを割り当てますイメージをクリックするたびにloadMainImage(imgPath)関数を起動しますか?は動的に私はjavascriptのクラスを以下しているjavascriptオブジェクト
ありがとうございます!
現在の値this
(これはImageGallery
オブジェクトを参照)をキャプチャし、loadMainImage
をonclick
の範囲で呼び出す必要があります。このハンドラを失うのは簡単ですので、私は、(onclickのあなたの場合)のonEventのようなメソッドを使用して回避しよう
var self = this;
img.onclick = function() {
self.loadMainImage(this.src);
};
:onclick
の内部では、this
はそうthis.src
はあなたのイメージソースを与える、画像自体を指し(ちょうどどこかimg.onclickを書くことは、以前のハンドラをオーバーライドします。)(jQueryのような)いくつかのJavaScriptライブラリを使用する
試して、それが少なくとも少し開発を簡素化します。そして、バックあなたの質問に、私はそう書くとYUI 2を使用して:
var imgCount = ImgArr.length; // do not use ImgArr.length in for definition, it is better
// to save it once and then use... otherwise each time in loop will look up ImgArr object to find length property
for (var i = 0; i < imgCount; i++) {
var img = document.createElement("img");
var src = ImgArr[i];
img.scr = src ;
YAHOO.util.Event.addListener(img, "click", this.loadMainImage, src, this);
}
あなたはjQueryのか、他のフレームワークで同様の機能を見つけることができます。何それがない:
YAHOO.util.Event.addListener(obj, event, handler, argument, context)
からevent
と指定handler
ため、obj
にイベントリスナーを付けます。 argument
- 何そのハンドラに渡す、とcontext
そのハンドラを実行する(あなたの場合にはそれだけでthis
になります)
これを行うには、ちょうどあなたがあなたのページをアンロードする際にこのハンドラをunattachすることを忘れないでください(または何をするにしても)、例えばYAHOO.util.Event.removeListener(img, "click", this.loadMainImage)
、または(YUIのpurgeElement
のように)接続されているすべてのリスナーを削除する関数を呼び出します。はい、物事はあなたがimg.onclick = ...;
を使用する場合、それについて世話をします。この場合、ブラウザでのように思える少し簡単です。
loadMainImage' 'のあなたの宣言は無効です。おそらく、 'this.loadMainImage = function(imgPath){...}'が必要です。画像をクリックしたときに –
'imgPath'パラメータは何でしょうか? – casablanca
Brian DonovanのloadMainImage関数が固定されています – ihorko