Стиль переключения такой же, как у класса в чистом javascript

#javascript

#javascript

Вопрос:

У меня есть некоторый код, в котором при нажатии кнопки переключается активный класс. В то же время мне нужно установить a top-margin для переключаемого элемента, который также необходимо удалить после повторного нажатия кнопки и удаления переключаемого класса. Я не могу установить top-margin как часть активного класса, так как мне нужно динамически получать значение поля, проверяя высоту другого элемента.

Это код, который я должен переключить класс и добавить поле

 var sizeBtn = document.querySelector(".size-toggle-btn");
var sizeItems = document.querySelector(".select-items");
var elementHeight = document.querySelector(".Detail-Container__inline").offsetHeight ;

sizeBtn.addEventListener("click", function(e) {
    sizeItems.classList.toggle('size-toggle--active')
    sizeItems.style.marginTop = "-"   elementHeight   "px";
});
 

Однако, очевидно, что это не удаляет стиль при повторном нажатии кнопки, поэтому в основном мне нужно переключать стиль так же, как активный класс. Есть ли способ сделать это?

Ответ №1:

Вам нужно проверить, есть ли className или нет, чтобы код мог быть:

 var sizeBtn = document.querySelector(".size-toggle-btn");
var sizeItems = document.querySelector(".select-items");
var elementHeight = document.querySelector(".Detail-Container__inline").offsetHeight ;

sizeBtn.addEventListener("click", function(e) {
  if(sizeItems.classList.contains('size-toggle--active')) {
    sizeItems.classList.remove('size-toggle--active')
    sizeItems.style.marginTop = null;
  }
  else{
    sizeItems.classList.add('size-toggle--active')
    sizeItems.style.marginTop = "-"   elementHeight   "px";
  }
});