Toxa26
@Toxa26
Студент. Люблю верстать сайты.

Возможно ли изменить стили для другого элемента при условии?

К примеру у меня есть элемент с классом .my-class1, а также динамичным классом .my-class1-2(элемент тот же, класс то появляется, то исчезает при каком-то условии(у меня это открытие и скрытие меню при нажатии на бургер)).
Также есть отдельный элемент с классом .my-class2
Знаю что отсутствие класса можно задать через псевдокласс :not
Возник вопрос, возможно ли изменить стили для элемента с классом .my-class2 только если элемент с классом .my-class1 не содержит класса .my-class1-2, тоесть .my-class1:not(.my-class1-2)
  • Вопрос задан
  • 664 просмотра
Пригласить эксперта
Ответы на вопрос 2
erge
@erge
Примус починяю
меняются не стили в классе, а классы у элемента и/или непосредственно стили самого элемента.
классы у элемента можно менять например так:
document.getElementsByClassName("my-class1")[0].className="my-class2"


стили так:
document.getElementsByClassName("my-class1")[0].style="font-family: 'PT Sans';font-style: normal;"


и т.п.

PS: метод document.getElementsByClassName() возвращает коллекцию, а не один элемент!

Upd:

ок, перечитал еще несколько раз, вроде понял что хотите ))
на JS возможно если у вас есть ссылка на объект с классом "my-class1"
например так

function checkMyFirstBlock(el){
	if(el.className.indexOf("my-class1-2") == -1) {
		// не найдено "my-class1-2"
		document.getElementsByClassName("my-class2")[0].style = "background-color:red";
	} else {
		// найдено
		document.getElementsByClassName("my-class2")[0].style = "background-color:white";
	}
}


в функцию checkMyFirstBlock передаете ссылку на первый блок
если у него в className нет класса my-class1-2, то выполняется условие и можно как угодно менять стили у my-class2

Upd2:
Но, проще наверно хранить "флаг" в глобальной переменной
если в каком-то месте меняем классы первого элемента, то выставляем в переменной "флаг" (пусть 1)
если сбрасываем, то в переменную = 0

далее проверяем флаг, соответственно выставляем стили у второго элемента.

как-то так.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Скриптами только, ну или если они вложенные.
Ответ написан
Ваш ответ на вопрос

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

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