Как изменить внешнюю переменную из обработчика событий в javascript? - PullRequest
0 голосов
/ 29 января 2020

У меня есть кнопка с прослушивателем событий щелчка

let button = document.createElement('button');
let show = false;
button.addEventListener('click', (e) => {
     e.stopPropagation();
     show = !show;
     console.log("show from inside:", show)
});
console.log("show from outside:", show) // => is always equal to false

Но эта строка выше показывает то же значение для переменной show, что и инициализировано.

Как я могу изменить show переменная изнутри, как эта строка show = !show и получить эту модификацию снаружи в этой строке console.log("show from outside:", show)?

1 Ответ

0 голосов
/ 29 января 2020

Вы создали элемент, но не добавили его в тело / родительский узел. Вам необходимо добавить следующую строку в ваш код:

document.body.appendChild(button);

Если вам нужно получить измененное значение show, вы можете написать функцию, которая будет возвращать значение show и использовать ее везде, где вам нужно. хочу.

Итоговый код:

let button = document.createElement('button');
document.body.appendChild(button);

let show = false;
function getShow() { return show; } // => returns the latest value of show

button.addEventListener('click', (e) => {
     e.stopPropagation();
     show = !show;
     console.log("show from inside:", getShow());
});
console.log("show from outside:", getShow()); // => Keep in mind that this line will run before the event handler does and only for once.

Надеюсь, это поможет!

...