Безплатно! Онлайн събитие: 5-дневно ChatGPT предизвикателство Регистрация тук.
Решение: Интерактивно меню
Пълен достъп до курса: Не
За пълен достъп или безплатна проба (2 модула), моля влезте или се регистрирайте.
Едно меню, един обект, ясен контрол върху селекцията
Най-важното тук е как чрез един обект управляваме цялото меню и гарантираме, че във всеки момент има само един избран елемент. Използваме контекста this, за да пазим състоянието (кой линк е селектиран) и bind, за да сме сигурни, че той няма да се промени при закачане на събития. Така изграждаме чиста и контролирана логика за работа с DOM и събития.
Стъпка по стъпка: как да изградите интерактивното меню
- Създайте обект
menuчрез анонимна конструктор функция, извикана директно сnew, за да имате само една инстанция. - Дефинирайте метод
Initializeи го закачете къмwindow.onload. - В
Initializeвземете всички линкове от менюто и ги запазете в свойство (напримерthis.links). - Обходете колекцията с
Object.keys(...).forEach(...). - На всеки линк добавете
clickсъбитие, което извиква вътрешната функцияOnClick. - В
OnClick:- Ако има вече избран елемент, премахнете класа
Selected. - Използвайте
event.target, за да разберете кой е кликнатият елемент. - Запазете го в
this.selectedи му добавете класаSelected.
- Ако има вече избран елемент, премахнете класа
Използвани ключови методи и концепции
addEventListener– закачане наclickсъбитие към всеки линкbind(this)– фиксира контекстаthisкъм обектаmenuObject.keys()– връща масив с ключовете на колекцияevent.target– указва кой DOM елемент е активирал събитиетоclassList.add()/classList.remove()– добавяне и премахване на CSS клас
Този модел е основа за изграждане на стабилни и предвидими интерактивни компоненти.