let wrapperItems = document.querySelectorAll('.wrapper div');
let years = document.querySelector('#years');
let yearsList = years.firstElementChild;
let arrayCounters = [0, 0, 0];
let counter = 0;
function activateListItem() {
;(function hideRestItems() {
wrapperItems.forEach((elem, item) => {
if(elem != this) {
elem.style.overflow = 'hidden';
}
});
})();
let obj = this;
this.style.overflow = 'visible';
document.addEventListener('keydown', changeListItem); // ВОТ ЭТО!
function changeListItem(event) {
wrapperItems.forEach(function(elem, index) {
if(elem == obj) {
counter = arrayCounters[index];
}
});
if(event.code === 'ArrowUp') {
counter += -20;
obj.firstElementChild.style.top = `${counter}px`;
} else if (event.code === 'ArrowDown') {
counter += 20;
obj.firstElementChild.style.top = `${counter}px`;
}
wrapperItems.forEach((elem, index) => {
if(elem == obj) {
arrayCounters[index] = counter;
}
});
}
}
wrapperItems.forEach((elem) => {
elem.addEventListener('click', activateListItem);
});
Суть такая: есть три списка, при клике на любой из них overflow: hidden; и могу с помощью стрелочек листать этот список, но при клике на, допустим другой, и если начинаю его листать, то предыдущий тоже листается, как это убрать? Пытался отвязать во всех местах кода этот обработчик(подписан "вот это") и во время проверки != элемент, который сейчас повешан обработчик основнов
codepen(кликните на первое, потом на второе и попробуйте полистать с помощью стрелочек вверх - вниз):
https://codepen.io/Safo4eg/full/BarZOWK
Буду благодарен даже не решению, а материалу, который подробней мне нужно изучить (повторить), чтобы справиться с этим