Обработчиком назначить метод объекта
Привет.
Хочу создать объект чтоб он создавал элементы на страничке, хранил ссылки на них и чтобы события от них возвращались к нему же. Делаю так: function class1() // прототип класса { this.tagName='в объекте значение'; // по умолчанию this.nazv='объект'; // this.vivod1=function() { alert(this.nazv+'\n'+this.tagName+'\n'); } } var myobj=new class1(); // создаю function func1() { var obj=document.getElementById('ddd');// элемент div на странице var ob=document.createElement('SPAN'); var o=document.createTextNode('Нажмите по мне'); ob.appendChild(o); ob.onclick=myobj.vivod1; // !!!!!!!!!! - назначаю обработчик obj.appendChild(ob); } В коде вызываю: <a href="javascript:myobj.vivod1()">Проверка 1</a> - все естественно ОК Потом: <a href="javascript:func1()">Проверка 2</a> элемент создастся, но при нажатии на нем функция myobj.vivod1 вызывается так как будто не имеет никакого отношения к myobj. Так делать нельзя, да? |
function class1() // конструктор класса { this.tagName='в объекте значение'; // по умолчанию this.nazv='объект'; // var self = this; this.vivod1=function() { alert(self.nazv+'\n'+self.tagName+'\n'); } } |
Во Riim спасибо. Круто.
Читал недавно про замыкания, подумал что несколько надуманно и оставил потом уже разбираться поглубже. И по иронии почти сразу понадобилось :) Вообще для более глубокой работы в JS обязательно замыкания пригодятся, да? (в других языках такого способа работы не встречал вроде.) |
Цитата:
|
Часовой пояс GMT +3, время: 15:53. |