ラッパー要素内に複数の要素を作成し、すべてとその関数をJavaScriptオブジェクト内に格納するライブラリを作成しています。ページ上にこのオブジェクトのインスタンスが複数存在する可能性があるため、IDを避けようとしています。ユーザーが要素の一部を変更できるようにする機能があり、画像を追加する方法を理解するのに役立つ必要があります。ここでイメージをimage.onload()関数に追加する要素を渡す方法
は関数である。
foo.prototype.rebrand = function(line1, line2, imgUrl){
this.branding.childNodes[1].innerHTML = line1;
this.branding.childNodes[2].innerHTML = line2;
var brandImage = document.createElement('img');
brandImage.onload = function(){
this.branding.childNodes[0].appendChild(brandImage);
//this won't work
}
brandImage.src = imgUrl;
}
あなたは残念ながら、.onload
関数の内部で、this
は、画像要素そのものを指しますfoo.rebrand('hello', 'world', 'example.png')
を呼び出します。ですから、どうすれば画像のロードにthis.branding.childNodes[0]
を渡すことができますか?
私はそうのような機能を記述する場合:
brandImage.onload = function(anything){
this.branding.childNodes[0].appendChild(brandImage);
//this won't work
}
そしてanything
はちょうどonload
イベントへの参照になります。
編集jsFiddleを追加する:あなたは、あなたが要素、ないのchildNodesを取得するために、特定の要素を参照する方法を変更する必要が http://jsfiddle.net/KtJd6/
http://jsfiddle.net/jfriend00/kkXCg/は、あなたがこれを= 'VARを試してみました;'し、代わりにthat' '使用:
あなたは、それはここで働いて見ることができますか?だからあなたは 'this'へのローカルリファレンスを持っていますか? –
私はvar 'self = this;'をオブジェクトに持っていますが、onloadでは、 'self'は' window'オブジェクトを参照しているようです。 –
もっとフィデリックなフィドルデモがありますか? –