Size: a a a

JavaScript — русскоговорящее сообщество

2020 November 26

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
Привет 👋
Подскажите как можно уменшить и оптимизировать этот код
const navbarItemElems = document.querySelectorAll('.navbar-item')

navbarItemElems.forEach(item => {
 item.addEventListener('click', event => {
   event.preventDefault()

   for (let i = 0; i < navbarItemElems.length; i++) {
     navbarItemElems[i].classList.remove('active')
   }

   item.classList.add('active')
 })
})
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
Привет 👋
Подскажите как можно уменшить и оптимизировать этот код
const navbarItemElems = document.querySelectorAll('.navbar-item')

navbarItemElems.forEach(item => {
 item.addEventListener('click', event => {
   event.preventDefault()

   for (let i = 0; i < navbarItemElems.length; i++) {
     navbarItemElems[i].classList.remove('active')
   }

   item.classList.add('active')
 })
})
1. click всплывает и ты можешь повесить обработчик на родителя
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
у тебя все еще будет event.target - кликнутый айтем
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
вместо цикла можно найти элемент по наличию класса active и убрать его только у него
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
querySelector в помощь тут
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
ну и можно проверить наличие класса active на event.target и если он есть не делать ничего
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
так вроде адекватнее
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
#3301⏣SoulString
у тебя все еще будет event.target - кликнутый айтем
пробовал без for но не убирало класс, точнее убирало если нажму на сам элемент повторно
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
пример кода скинь
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
const burgerMenuElem = document.querySelector('.navbar-burger')
const navbarWrapperElem = document.querySelector('.navbar-wrapper')
const navbarItemElems = document.querySelectorAll('.navbar-item')
const buttonUpElem = document.querySelector('.button-up')

burgerMenuElem.addEventListener('click', event => {
 event.preventDefault()

 burgerMenuElem.classList.toggle('active')
 navbarWrapperElem.classList.toggle('active')
 buttonUpElem.classList.toggle('active')
})

navbarItemElems.forEach(item => {
 item.addEventListener('click', event => {
   event.preventDefault()

   for (let i = 0; i < navbarItemElems.length; i++) {
     navbarItemElems[i].classList.remove('active')
   }

   item.classList.add('active')
 })
})
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
прости что сюда
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
прости что сюда
точнее так
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
const burgerMenuElem = document.querySelector('.navbar-burger')
const navbarWrapperElem = document.querySelector('.navbar-wrapper')
const navbarItemElems = document.querySelectorAll('.navbar-item')
const buttonUpElem = document.querySelector('.button-up')

burgerMenuElem.addEventListener('click', event => {
 event.preventDefault()

 burgerMenuElem.classList.toggle('active')
 navbarWrapperElem.classList.toggle('active')
 buttonUpElem.classList.toggle('active')
})

navbarItemElems.forEach(item => {
 item.addEventListener('click', event => {
   event.preventDefault()

   for (let i = 0; i < navbarItemElems.length; i++) {
     navbarItemElems[i].classList.remove('active')
   }

   item.classList.add('active')
 })
})
в см пример кода без цикла
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
#3301⏣SoulString
в см пример кода без цикла
см?
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
пробовал без for но не убирало класс, точнее убирало если нажму на сам элемент повторно
вот этот код
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
#3301⏣SoulString
вот этот код
navbarItemElems.forEach(item => {
 item.addEventListener('click', function(event) {
   event.preventDefault()

   item.classList.remove('active')
   this.classList.add('active')
 })
})
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
navbarItemElems.forEach(item => {
 item.addEventListener('click', function(event) {
   event.preventDefault()

   item.classList.remove('active')
   this.classList.add('active')
 })
})
вот но он не рабочий
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
Sergei Kondrashevsky
navbarItemElems.forEach(item => {
 item.addEventListener('click', function(event) {
   event.preventDefault()

   item.classList.remove('active')
   this.classList.add('active')
 })
})
подожди
источник

#

#3301⏣SoulString in JavaScript — русскоговорящее сообщество
у тебя тут обрабатывается клик на кнопку
источник

SK

Sergei Kondrashevsky in JavaScript — русскоговорящее сообщество
#3301⏣SoulString
у тебя тут обрабатывается клик на кнопку
на ссылку
источник