0

Имеется несколько кнопок(input type="button"), на которые повешен объект событий event.target ,a конкретнее onclick.
Когда происходит клик по одной из кнопок, в функцию handler(); передается значение(value="...") input'a(btn1, btn2 или btn3) и сохраняется в переменную inpValue.
Вопрос: как вытащить переменную inpValue за пределы функции handler(); ?

let btns = document.getElementById('buttons');

btns.addEventListener('click', handler);

function handler(e) { let target = e.target; let inpValue = target.value; return function () { return inpValue; } }

let theInputValue = handler(); console.log(theInputValue());

<div id="buttons">
    <input type="button" value="btn1">
    <input type="button" value="btn2">
    <input type="button" value="btn3">
</div>

В консоль выдает такую ошибку: TypeError: e is undefined
Тут судя по всему handler(); требует аргумент при вызове через переменную theInputValue, но что засунуть туда я не знаю

Denisoed
  • 774
  • 1
    вообще непонятно что ты делаешь и для чего. – Grundy Jan 26 '17 at 06:05
  • @Grundy Я изучаю замыкание! Не получается получить значение inpValue вне функции. Вроде вопрос понятный) – Denisoed Jan 26 '17 at 06:07
  • inpValue - локальная переменная, извне ты ее никак не получишь. А так как речь вообще идет про обработчики события - смотри вопрос-дубликат. – Grundy Jan 26 '17 at 06:09
  • @Grundy то-есть значение переменной я смогу получить только если я её сделаю глобальной ?как раз я не хочу этого делать – Denisoed Jan 26 '17 at 06:21
  • Нет. Прочитай ответы на вопрос-дубликат. – Grundy Jan 26 '17 at 06:24
  • @Grundy, ты точно тем дубликатом закрыл?)) – Утка Учится Укрываться Jan 26 '17 at 07:14
  • @УткаУчитсяУму, определенно! В обработчике события он заполняет переменную, и хочет получить значение этой переменной. – Grundy Jan 26 '17 at 07:21
  • @УткаУчитсяУму Есть варианты? – Denisoed Jan 26 '17 at 07:29
  • @Denisoed, ну вообще да. Мне кажется здесь дубликат связан очень косвенно и разбираясь в нем Вы просто сломаете себе мозг на ровном месте. Сформулируйте русским языком что делает ваша функця handler =) – Утка Учится Укрываться Jan 26 '17 at 07:32
  • @Denisoed, потому что по вашему вопросу не оч понятно что именно Вы не понимаете. Возможно проблемы с которой связан дубликат. Если да, то пока читайте до "проблема макаронного кода", дальше не читайте, только запутаетесь. – Утка Учится Укрываться Jan 26 '17 at 07:35
  • и я бы советовал вам задачу чуть подробить для понимания. Если хотите разобраться в замыканиях, постарайтесь одновременно не использовать события и наоборот – Утка Учится Укрываться Jan 26 '17 at 07:37
  • @УткаУчитсяУму"Этот код является учебным) сразу говорю! и так, на странице есть три инпута со значением btn1, btn2, btn3. Когда я нажимаю на один из них, значение этого инпута обрабатывается обьектом событий(EVENT.TARGET) и вызывает функцию, в которую передается значение(то-есть value=" ") нажатого инпута и это значение записывается в переменную(так же не важно в какую). После чего мне нужно вывести эту переменную за пределы функции. и как я понимаю это можно сделать через замыкание – Denisoed Jan 26 '17 at 07:42
  • @УткаУчитсяУму Записываю в новую переменную(снаружи) то что мне вернула функция. Вызываю эту переменную, допустим console.log(a()); И переменная a от меня требует аргумент(то есть event.target) – Denisoed Jan 26 '17 at 07:45
  • @УткаУчитсяУму В коде выше все видно – Denisoed Jan 26 '17 at 07:50
  • @Denisoed, в коде выше-то все видно, видно то что вы придумали себе какую-то странную задачу и странное решение в которых сами и запутались) И ответом на ваш вопрос по хорошему должно быть не точечное исправление странного решения странной задачи а какие-то наводящие вопросы чтобы Вы поняли что это странно и делают не то и не так) Но у меня к сожалению вот прям ща нет на это времени – Утка Учится Укрываться Jan 26 '17 at 07:54
  • @УткаУчитсяУму И на этом спасибо =) – Denisoed Jan 26 '17 at 07:57

0 Answers0