Javascript.RU

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

Классы js. Как обратиться к свойству класса из обработчика события клик
Здравствуйте. Я недавно начала изучать js и столкнулась с такой проблемой: создаю 2 объекта а0 и а1 класса А(). Запуская для каждого метод aMethod.genDiv, он создает 2 кнопки и на каждую вешает событие клика. Обработчик aClick увеличивает aMethod.genDiv.something.some1 на 1.
function A() {
    this.aMethod = {
        something: {
            some1: 1,
            some2: 2
        },
        genDiv: function(num){
            var wrapper = document.getElementById('wrapper');
            var a = document.createElement('input');
            a.id = 'a' + num;
            a.type = 'button';
            a.value = a.id;
            a.addEventListener('click', this.aClick);
            wrapper.appendChild(a);

        },
        aClick:function(){
            console.log(this.something.some1); // выдает undefinde , думаю,
                                                               //тк в обработчике this  это
                                                               // сам инпут, а не 
                                                              //nameObj.aMethod.something.some1
            this.something.some1++;
            
        }
    }
}
window.onload = function () {
    var objName;
    for(var i = 0; i < 2; i++){
        objName = 'a' + i;
        objName = new A();
        objName.aMethod.genDiv(i);
    }
}

Вопрос: как нужно правильно обратиться из обработчика события клик к nameObj.aMethod.something.some1 . Понимаю, что нельзя напрямую a0.aMethod.something.some1 тк есть еще объект a1. И в дальнейшем могут появиться и другие a2,a3...aN. Заранее спасибо

Последний раз редактировалось Аленький цветочек, 06.06.2015 в 15:13.
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2015, 09:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Аленький цветочек,
a.addEventListener('click', this.aClick.bind(this));
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2015, 16:29
Аватар для Аленький цветочек
Интересующийся
Отправить личное сообщение для Аленький цветочек Посмотреть профиль Найти все сообщения от Аленький цветочек
 
Регистрация: 29.11.2012
Сообщений: 15

рони,
Огромное спасибо, заработало))
function A() {
    this.aMethod = {
        something: {
            some1: 1,
            some2: 2
        },
        genDiv: function(num){
            var wrapper = document.getElementById('wrapper');
            var a = document.createElement('input');
            a.id = 'a' + num;
            this.aId = a.id;
            a.type = 'button';
            a.value = a.id;
            a.addEventListener('click', this.aClick.bind(this));
            wrapper.appendChild(a);
        },
        aClick:function(){
            console.log(this.something.some1); // 1
        }
    }
}
window.onload = function () {
    var objName;
    for(var i = 0; i < 2; i++){
        objName = 'a' + i;
        objName = new A();
        objName.aMethod.genDiv(i);
    }
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Как изменить параметр класса с помощью JS? Shitbox2 Events/DOM/Window 5 07.03.2011 20:52