0 / 0 / 0
Регистрация: 01.01.2017
Сообщений: 15

Потеря контекста у переменной

12.06.2019, 01:19. Показов 1605. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, ранее была проблема с потерей контекста у метода, но обернув его в стрелочную функцию все решилось, но теперь возникла проблема с переменной, когда в методе createTableElement() явно присваиваю значение переменной (this.del_c = addButton - работает, но когда передаю в качестве параметра при вызове функции и в дальнейшем присваиваю (variable = addButton - идет потеря контекста. Делаю проверку на работоспособность в методе unvisibleDelButton().
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
constructor(rows, column) {
        this.rows = rows;
        this.column = column;
        this.paintCube();
        this.count = 1;
        this.add_c;
        this.add_r;
        this.del_c;
        this.del_r;
    }
    paintCube() { //Начальная отрисовка квадрата
        let add = document.createElement('div');
        add.className = 'mean_block';
        add.addEventListener('mouseleave', () => {this.unvisibleDelButtonTimer(add);});
        document.body.appendChild(add);
        this.createTableElement('button', 'size-block buttons add add_c', this.add_r, () => { this.addRowButton(add); }, '+', add);
        this.createTableElement('button', 'size-block buttons add add_r', this.add_c, () => { this.addColumnButton(add); }, '+', add);
        this.createTableElement('button', 'size-block buttons del del_c', this.del_c, () => { this.delColumnButton(add, addButton); }, '-', add);
        this.createTableElement('button', 'size-block buttons del del_r', this.del_r, () => { this.delRowButton(add); }, '-', add);
        for (let i = 0; i < this.rows; i++) {
            let neededRow = document.createElement('div');
            add.appendChild(neededRow);
            for (let j = 0; j < this.column; j++) {
                this.createBlockElement('div', 'size-block block', neededRow);
            }
        }
    }
    createBlockElement(elementType, className, neededRow) {
        let addBlock = document.createElement(elementType);
        addBlock.className = className;
        neededRow.appendChild(addBlock);
    }
    createTableElement(elementType, className, variable, handler, value, add) {
        let addButton = document.createElement(elementType);
        addButton.className = className;
        addButton.innerHTML = value;
        addButton.addEventListener('click', handler, false);  
        add.appendChild(addButton);
        variable = addButton;
        console.log(variable);
        //this.del_c = addButton;
        //console.log(this.del_c);
    }
    unvisibleDelButtonTimer(add){
        let timerId = setTimeout(()=>{this.unvisibleDelButton();}, 100);
        add.addEventListener('mouseenter', () => {clearTimeout(timerId);});
    }
    unvisibleDelButton(){
        console.log(this.del_c);
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2019, 01:19
Ответы с готовыми решениями:

Потеря контекста
Доброго времени суток. Помогите понять следующий пример: взят от сюда https://learn.javascript.ru/bind var user = { ...

COM потеря контекста. rpc_e_disconnected
Текст ошибки стандартный Если кто работает с такой штукой, подскажите как отлавливать такое в плане кода? try-catch на такое...

Потеря переменной при использовании конструкции исключений
После данного фрагмента процедуры, IDE теряет переменную f1, с чем это связано и как избежать этого? try { ...

4
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
12.06.2019, 06:58
Max_Maxim,
JavaScript
1
  this.add_r = this.createTableElement('button', 'size-block buttons add add_c', () => { this.addRowButton(add); }, '+', add);
0
0 / 0 / 0
Регистрация: 01.01.2017
Сообщений: 15
12.06.2019, 11:33  [ТС]
Увы, но значение переменной "undefined", ранее уже пытался так делать...
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
12.06.2019, 12:50
Лучший ответ Сообщение было отмечено Max_Maxim как решение

Решение

Цитата Сообщение от Max_Maxim Посмотреть сообщение
Увы, но значение переменной "undefined"
Max_Maxim, показывайте код. return addButton в createTableElement не забыли добавить, когда
Цитата Сообщение от Max_Maxim Посмотреть сообщение
ранее уже пытался так делать...
1
0 / 0 / 0
Регистрация: 01.01.2017
Сообщений: 15
12.06.2019, 13:49  [ТС]
Вот как раз это и забыл сделать, большое спасибо, все работает )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2019, 13:49
Помогаю со студенческими работами здесь

Надо вывести название переменной, тип данных переменной, значение переменной
у нас есть переменная int variable = 0; Надо вывести название переменной, тип данных переменной, значение переменной как это сделать?

Надо вывести название переменной, тип данных переменной, значение переменной
у нас есть переменная int variable = 0; Надо вывести название переменной, тип данных переменной, значение переменной как это сделать?

a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.

Переменной B присвоить первую десятичную цифру переменной A, а переменной С вторую цифру переменной А
Помогите, у меня есть число A = 16,и переменные B и C. Как переменной B присвоить первую цифру переменной A, а переменной С второе число...

Привязка контекста к {}
Можно привязать контекст к объекту? var obj1 = { prop: 1, method: { set: function () { return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru