Написать код по стандарту ES6

187
29 мая 2018, 08:40

Как написать данный код по стандарту ES6?

<ul class="menu__ul">
    <li class="menu__li">
        <a class="menu__link" href="#">
            <span class="menu__title">about</span>
        </a>
    </li>
</ul>

var menuUl = document.querySelector('.menu__ul')
var menuLink = document.getElementsByClassName('menu__link')
for (var i = 0; i < menuLink.length; i++) {
menuLink[i].onclick = function() { //click
    //remove class for all spans
    var menuTitle  = menuUl.querySelectorAll('.menu__title')
    for (i = 0; i < menuTitle.length; i++){
        menuTitle[i].classList.remove('menu__title--active')
    }
    this.querySelector('.menu__title').classList.add('menu__title--active') //add class
}
}
Answer 1

let menuUl = document.querySelector('.menu__ul');                  // Общий предок - менюшка в данном случае 
let currentActive = document.querySelector('.menu__link--active'); // Текущий активный элемент; нужен для того, чтобы каждый раз не обходить все элементы 
 
menuUl.addEventListener('click', function (e) { // Простенький 
  let a = e.target.closest('a');                // Делегатор 
   
  if(!a || !menuUl.contains(a)) return;         // См. https://learn.javascript.ru/event-delegation 
   
  if(currentActive) {                                     // Если текущий элемен есть (сначала его нет, будет null) 
    currentActive.classList.remove('menu__link--active'); // Убираем ему статус текущего 
  } 
   
  currentActive = a; // Теперь текущий - это тот, по которому кликнули 
   
  a.classList.add('menu__link--active'); // Думаю очевидно 
});
.menu__link--active { 
  color: red; 
}
<ul class="menu__ul"> 
  <li class="menu__li"> 
    <a class="menu__link" href="#"> 
      <span class="menu__title">about</span> 
    </a> 
  </li> 
  <li class="menu__li"> 
    <a class="menu__link" href="#"> 
      <span class="menu__title">test</span> 
    </a> 
  </li> 
</ul>

READ ALSO
Перевернуть слова в массиве не меняя порядка слов JS

Перевернуть слова в массиве не меняя порядка слов JS

У меня есть массив с элементами stringМне нужно поменять буквы в словах местами, оставив порядок слов в массиве без изменений

178
Замена текста на иконки (js, react)

Замена текста на иконки (js, react)

Мне от сервера приходят ссылки на социальные сетиКак правильно заменить текст ссылки (item

180
Google extension webstore

Google extension webstore

Как с помощью javascript или другими способами показать кнопку "Установить"? Мне не смена браузера на хром нужно, а именно эту кнопку показатьПоменяв...

168