Показать сообщение отдельно
  #5 (permalink)  
Старый 27.06.2021, 13:10
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

я же написал, "как вариант, но очень "сомнительный" подход".

несомненно, предложенный тобой подход является верным

<html>
<body>
  <div style="padding: 20px;  background:yellow;"></div>
<script>
arrColors=['red','yellow','blue','black']

const classOne = document.querySelector('div');
classOne.addEventListener('click', (e) => {
  let color=e.target.style.background
  newIndex=(arrColors.findIndex(e=>e===color)+1)%arrColors.length
  e.target.style.background = arrColors[newIndex]
})
</script>
</body>
</html>


но здесь есть один минус. Первоначальный цвет нужно задавать непосредственно в элементе. Если через класс, то первый раз e.target.style.background выдаст пусто и будет red вместо blue

Последний раз редактировалось od0201, 27.06.2021 в 14:06.
Ответить с цитированием