@rustam6548

Не получается изменить цвет через js, как исправить?

let toggleButton = document.getElementById("togbut");
let s1 = document.getElementById("s1").style.backgroundColor;
let s2 = document.getElementById("s2").style.backgroundColor;
let s3 = document.getElementById("s3").style.backgroundColor;

function changeColor() {
  s1 = "white";
  s2 = "white";
  s3 = "white";
}

toggleButton.onmouseover = changeColor;


<body>
    <div>
      <div class="toggle-button" id="togbut">
        <span id="s1"></span>
        <span id="s2"></span>
        <span id="s3"></span>
      </div>
      <ul class="sidebar">
        <li>Menu</li>
        <li><a href="/">Main</li>
        <li><a href="/">About us</li>
      </ul>
    </div>
    <script src="scripts/menu.js"></script>
</body>
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
в переменных s1-2-3 оказывается лишь текущее значение цвета.
Если его поменять в переменных, оно не изменится в элементах.

Ну и в целом задача, наверное, лучше решается просто стилями и псевдоклассом :hover
Ответ написан
@berdyevX
1) Находим DOM-элементы (для объявления лучше использовать const):
const toggleButton = document.getElementById("togbut");
const s1 = document.getElementById("s1");
const s2 = document.getElementById("s2");
const s3 = document.getElementById("s3");

2) Создаём функцию для изменения background у элементов (использую ES6 синтаксис):
const changeColor = () => {
s1.style.backgroundColor = 'white';
s2.style.backgroundColor = 'white';
s3.style.backgroundColor = 'white';
};

3) Создаём обработчик событий при наведении и передаём туда нашу функцию:
toggleButton.addEventListener('mouseover', changeColor);

Код писал на телефоне, мог не заметить ошибки, также это мой первый ответ на хабре, если что-то не так, извиняюсь :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы