Сохранение данных из обработчика

370
14 февраля 2017, 21:02

Вот, например, есть такой простейший код, на каждую кнопку повешен обработчик событий, который просто выводит значение нажатой кнопки через console.log():

var calculator = function () {
    var buttons = document.querySelectorAll('div.button');
    var numbers = [];
    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', calculate, false);
    }
    function calculate() {
        var btnValue = this.innerHTML;
        console.log(btnValue);
        return btnValue;
    }
} ();

Вот теперь вопрос: а как сохранить текущее значение btnValue из обработчика в переменную? Допустим если я хочу сохранить в массиве numbers значения всех кнопок которые были нажаты (btnValue), то как мне это сделать? Заранее спасибо!

Answer 1
var calculator = function () {
    var buttons = document.querySelectorAll('div.button');
    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', calculate, false);
    }
    function calculate() {
        var btnValue = this.innerHTML;
        console.log(btnValue);
        calculator.currentValue = btnValue;  // !!!
        calculator.allValues.push(btnValue); // !!!
        return btnValue;
    }
    return { 
      currentValue: null,
      allValues: [] 
    };
} ();
READ ALSO
Меню в виде адаптивной карусели

Меню в виде адаптивной карусели

Вот так меню сверстал:

437
Не возращается объект из функции

Не возращается объект из функции

Почитал статью по асинхронную архитектуру, решил передалать свой вариант

375
Как понять данную запись с пайплайном (&ldquo;|&rdquo;)?

Как понять данную запись с пайплайном (“|”)?

Есть такая вот строчка кода: (i / 3 | 0) * 10i принимает значения от 0 до 14

351