В своем коде я выбираю некоторые входные данные HTML и добавляю функцию footComparer
в качестве обратного вызова.
Я пытаюсь немного упростить мой код, добавив объект помощников, который будет содержать некоторые вспомогательные функции.
Проблема в том, когда он попадает в эту строку:
selectedSearchDropdown.style.display = '';
Выдает ошибку ссылки:
selectedSearchDropdown is not defined.
У меня реальная проблема с пониманием , почему здесь не работают замыкания. Разве функция footComparer
не должна иметь доступ к переменной selectedSearchDropdown
, поскольку она остается в памяти как замыкание?
const searchInputs = document.querySelectorAll('.searchBox__input');
searchInputs.forEach(input => input.addEventListener('input', footComparer));
function footComparer(e) {
helpers.elementSelector(e);
selectedSearchDropdown.style.display = '';
}
let helpers = {
elementSelector: function (e) {
let selectedSearchDropdown = e.target.parentNode.childNodes[3];
}