我正在寫一個庫,它在一個包裝器元素中創建多個元素,並將所有這些及其函數存儲在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;
}
你會打電話foo.rebrand('hello', 'world', 'example.png')
不幸的是,.onload
函數內部,this
將參照圖像元素本身。那麼,我怎麼能通過this.branding.childNodes[0]
進入圖像載入?
如果我寫的功能,像這樣:
brandImage.onload = function(anything){
this.branding.childNodes[0].appendChild(brandImage);
//this won't work
}
然後anything
將只是給onload
事件的引用。
編輯添加的jsfiddle: http://jsfiddle.net/KtJd6/
你試過'VAR是這個=;'和'使用代替that'?所以你有一個本地參考'this'? – 2012-03-31 14:38:51
是的,我有var'self = this;'在我的對象中,但在onload中,'self'似乎指的是'window'對象。 – 2012-03-31 14:39:54
你有更全面的小提琴演示與合作? – 2012-03-31 14:40:47