@Tempest99

Смена цвета div по щелчку,в чем ошибка?

такая задача - Даны несколько div элементов на html.
По первому нажатию на каждый div
он перекрашивается зеленым цветом,
при повторном нажатии перекрашивается
обратно и так далее каждый клик
происходит чередование цвета.

Вот накидал такой код, но не работает. Ведь задаю, что при нажатии на любой див менялся цвет, иначе цвет остается прежним.

<div id="Div1">Box1</div>
<div id="Div2">Box2</div>
<div id="Div3">Box3</div>


var box = document.getElementsByTagName("DIV")
function(){

if(box.onclick){
    box.style.backgroundColor = 'green';
    } else{
       box.style.backgroundColor = '';
    }
};
  • Вопрос задан
  • 1103 просмотра
Решения вопроса 2
Потому что переменная box это html-коллекция, а не конкретный див по котором вы кликаете. Чтоб менять свойство у конкретного элемента нужно использовать например цикл.
var box = document.getElementsByTagName("DIV");

for( var i = 0; i < box.length; i++) {
  box[i].addEventListener('click', function() {
    if(!this.style.backgroundColor) {
      this.style.backgroundColor = 'red';
    } else {
      this.style.backgroundColor = '';
    }
  })
}
Ответ написан
@Finch_85
Лучше наверное сделать присваивание класса, а не изменение свойств через style
https://jsfiddle.net/ppx4mv0w/2/

let boxes = document.querySelectorAll('.box');

boxes.forEach(element=>{
	element.addEventListener('click',()=>{
  	element.classList.toggle('colored')
  })
})

.box {
  width: 50px;
  height: 50px;
  border: 1px solid #000;
}
.colored {
  background: red;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
coolswood
@coolswood
https://coolswood.github.io
Изучайте основы js, а если не хотите погружаться, то используйте jquery, скорее всего оттуда вы и взяли принцип работы с коллекциями как с элементами. Вот вам решение https://codepen.io/anon/pen/LmqxVV
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 17:10
20000 руб./за проект
28 апр. 2024, в 15:00
100000 руб./за проект
28 апр. 2024, в 14:43
5000 руб./за проект