Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2022, 12:02
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Перебор массива
Здравствуйте.
Нужно по клику добавить класс к выбранному элементу и удалить во всех остальных, вопрос в том, как это сделать не используя два (forEach) перебора массива?
Возможно можно ограничится одним перебором?
<section class="skills">

        <div class="skills-item">
          <i class="fa-brands fa-js skills-item__icon"></i>

          <div class="skills-item__text">
            some text
          </div>
        </div>

        <div class="skills-item">
          <i class="fa-brands fa-js skills-item__icon"></i>

          <div class="skills-item__text">
            some text
          </div>
        </div>

        <div class="skills-item">
          <i class="fa-brands fa-js skills-item__icon"></i>

          <div class="skills-item__text">
            some text
          </div>
        </div>

      </section>


skillsIcon.forEach(item => {
      item.addEventListener('click', () => {
        
        skillsText.forEach((items, i) => {
          items.classList.remove('skills-item__text_active');
          skillsIcon[i].classList.remove('skills-item__icon_active');
        });

        item.classList.add('skills-item__icon_active');
        item.nextElementSibling.classList.add('skills-item__text_active');
      });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2022, 14:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

TheSanches, кто такой skillsIcon?
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2022, 15:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от TheSanches
как это сделать не используя два (forEach) перебора массива?
Вариант вообще без циклов...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
.active {
	color: red;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', _ => {
	const oc = document.querySelector('.skills')
	oc.addEventListener('click', e => {
		if (e.target.tagName !== 'I') return
		const o = oc.querySelector('.active')
		if (o) o.classList.remove('active')
		e.target.parentNode.querySelector('.skills-item__text').classList.add('active')
	})
})
</script>
</head>
<body>
<section class="skills">
	<div class="skills-item">
		<i class="fa-brands fa-js skills-item__icon">I 0</i>
		<div class="skills-item__text">
			some text 0
		</div>
	</div>
	<div class="skills-item">
		<i class="fa-brands fa-js skills-item__icon">I 1</i>
		<div class="skills-item__text">
			some text 1
		</div>
	</div>
	<div class="skills-item">
		<i class="fa-brands fa-js skills-item__icon">I 2</i>
		<div class="skills-item__text">
			some text 2
		</div>
	</div>
</section>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2022, 14:08
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Сообщение от ksa Посмотреть сообщение
TheSanches, кто такой skillsIcon?
<i class="fa-brands fa-js skills-item__icon"></i>
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2022, 14:08
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор эл. массива с целью присвоения значения переменной. uzlprog Events/DOM/Window 17 07.09.2021 13:32
Перебор массива с фунциями MichaelYT Javascript под браузер 4 01.02.2021 17:33
Раздельный перебор массива Himmelin Общие вопросы Javascript 18 31.10.2020 19:28
Перебор элементов массива и сравнение со значением TheSanches Общие вопросы Javascript 7 26.02.2018 19:54
Перебор массива - вложенный цикл SWin Общие вопросы Javascript 35 27.12.2013 05:06