Переключение нескольких элементов с одним и тем же классом

#javascript #css #toggle

#javascript #css #переключение

Вопрос:

Я нашел много информации об этом в Интернете, но, похоже, я не могу заставить что-либо из этого работать для этого.

Я пытаюсь создать кнопку, которая переключает светлую / темную тему при нажатии, изменяя только цвет основного фона и стиль трех модальных кнопок на странице. Мой код работает для оформления кнопок, но не для основного фона. Я совсем новичок, поэтому думаю, что, вероятно, я просто что-то упускаю синтаксически. ого!

это должно быть на родном javascript, а не на jQuery. Любые подсказки были бы очень признательны. Заранее большое спасибо!

CSS:

 .light body {
    background: #D8DDDE;
}

.light .myBtn {

    color:rgb(58, 57, 57);
    background-color: #D8DDDE;
    border-top: solid 4px rgb(58, 57, 57);
    border-left: none;
    border-right: none;
    border-bottom: none; 
    transition: 0.6s;

}
  

Javascript

 var themeSwitch = document.querySelector("footer button");

document.querySelector("footer button").addEventListener("click", toggleText);
   function toggleText() {
      if (themeSwitch.textContent === "Turn the lights off") {
         themeSwitch.textContent = "Turn the lights on";
      } else {
         themeSwitch.textContent = "Turn the lights off";
      }
   }

themeSwitch.addEventListener('click', function(){
    document.querySelector("body").classList.toggle("light") //this is working for the button but not the body background
})
  

Комментарии:

1. пожалуйста, покажите свой HTML-код и создайте работоспособный код..

2. Попробуйте body.light в вашем CSS (без пробела) вместо .light body

Ответ №1:

Этот код ошибочен

   .light body {
        background: #D8DDDE;
    }
  

пожалуйста, измените на

 body.light{
    background: #D8DDDE;
} 
  

 var themeSwitch = document.querySelector(".footer button");

themeSwitch.addEventListener("click", toggleText);
   function toggleText() {
      if (themeSwitch.textContent === "Turn the lights off") {
         themeSwitch.textContent = "Turn the lights on";
      } else {
         themeSwitch.textContent = "Turn the lights off";
      }
   }

themeSwitch.addEventListener('click', function(){
    document.querySelector("body").classList.toggle("light") //this is working for the button but not the body background
})  
 body.light {
    background: #D8DDDE;
}

.light .myBtn {

    color:rgb(58, 57, 57);
    background-color: #D8DDDE;
    border-top: solid 4px rgb(58, 57, 57);
    border-left: none;
    border-right: none;
    border-bottom: none; 
    transition: 0.6s;

}  
 <div class="footer">
<button>Turn the lights on</button>
</div>  

Комментарии:

1. @imo-vee попробуйте это, вы добавили ошибку stye use в body.light класс

Ответ №2:

Попробуйте удалить body из класса css .light .