Я пишу библиотеку, которая создает несколько элементов внутри элемента оболочки и сохраняет все это и свои функции внутри объекта JavaScript. Я пытаюсь избежать идентификаторов, поскольку на странице могут быть несколько экземпляров этого объекта. У меня есть функция, позволяющая пользователю изменять некоторые элементы, и мне нужна помощь в том, как добавить изображение.Как передать элемент для добавления изображения в функцию 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/
Вы пробовали 'вар, что = это;' и использовать 'that' вместо этого? Итак, у вас есть локальная ссылка на 'this'? –
Да, у меня есть var 'self = this;' в моем объекте, но в onload, 'self', похоже, ссылается на объект' window'. –
У вас есть более полная демонстрационная скрипка для работы? –