Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2009, 08:20
Новичок на форуме
Отправить личное сообщение для Dmitryk Посмотреть профиль Найти все сообщения от Dmitryk
 
Регистрация: 11.03.2009
Сообщений: 1

Как заставить this в обработчике события указывать на объект?
Здравствуйте!

Есть такой код:

function Cls()
{
    this.a = 1;
    document.getElementById("imgId").onclick = this.f1;
}

Cls.prototype.f1 = function()
{
    alert([this.a, this === window]);
}

var ob = new Cls();
ob.f1(); // 1, false


Для его работы, на странице должен распологаться контрол img с идентификатором imgId.

Проблема в том, что в обработчике события this указывает на элемент управления, который вызвал это событие (в данном случае на картинку imgId).

А нужно, чтобы this указывал на тот контекст, в котором обработчик события был подключен (т.е. на ob, т.к. подключили обработчик в конструкторе ob).

Если я правильно понял философию JavaScript, то это традиционная задача и все с этим сталкиваются. Как обычно решают эту проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2009, 09:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dmitryk
Если я правильно понял философию JavaScript, то это традиционная задача и все с этим сталкиваются.
Вы все совершенно правильно поняли. Вот только зачем со стандартной задачей переться на форум, если в поиске все есть?
http://javascript.ru/tutorial/object/thiskeyword
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2009, 12:53
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

function Cls()
{
    this.a = 1;
    var obj = this;
    document.body.onclick = function() {
        obj.f1();
    };
}
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2009, 08:45
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Я использую метод apply.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как проверить присутствует ли на странице заданный объект? nick Общие вопросы Javascript 7 18.12.2010 19:16
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Как заставить работать оперу и мозилу? SDone AJAX и COMET 6 25.02.2009 16:05
как сделать гиперсылку на объект javascript??? kos_walker Общие вопросы Javascript 3 30.09.2008 06:58