Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2018, 10:39
Интересующийся
Отправить личное сообщение для Dan Atst Посмотреть профиль Найти все сообщения от Dan Atst
 
Регистрация: 21.02.2015
Сообщений: 15

Изменить css стиль блока учитывая data-параметр
Здравствуйте! Такая ситуация:
Есть список, к примеру:
<ul>
<li class="someclass1" data-address="Moscow"></li>
<li class="someclass1" data-address="Rome"></li>
<li class="someclass1" data-address="Baku"></li>
</ul>


и есть три блока:
<div class="someclass2" data-address="Moscow"></div>
<div class="someclass2" data-address="Rome" style="display: none;"></div>
<div class="someclass2" data-address="Baku" style="display: none;"></div>


Можно ли сделать так, чтобы при клике на одну из "лишек", блок с таким же data-параметром становился видимым, а остальные наоборот.
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2018, 11:14
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

<ul>
<li class="someclass1" data-address="Moscow">mosc</li>
<li class="someclass1" data-address="Rome">asd</li>
<li class="someclass1" data-address="Baku">dsa</li>
</ul>
<div class="someclass2" data-address="Moscow" style="display: none;">asdasd</div>
<div class="someclass2" data-address="Rome" style="display: none;">dasdasdasdasd</div>
<div class="someclass2" data-address="Baku" style="display: none;">zasdad</div>
<script>
	var controls=document.querySelectorAll('.someclass1[data-address]'),
		targets=[].slice.call(document.querySelectorAll('.someclass2[data-address]'));

	[].forEach.call(controls,function(node){
		node.onclick=function(){
			var address=node.dataset.address;
			targets.forEach(function(item){
				item.style.display=
					['none','block'][+(item.dataset.address==address)];
			});
		};
	});
	controls[0].click();
</script>

Последний раз редактировалось Nexus, 12.04.2018 в 12:02.
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2018, 11:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nexus,
Лучше выглядит, если
<div class="someclass2" data-address="Moscow" style="display: none;">asdasd</div>

тоже, как и другие.
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2018, 12:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Dilettante_Pro, согласен, поправил.
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2018, 12:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123


эта музыка будет вечной ...
https://javascript.ru/forum/showthread.php?p=337899 ... а также ещё и ещё и ещё ... искать "открывашка"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как изменить css свойсво нескольких елементов? IIIgun Общие вопросы Javascript 17 12.08.2011 12:20
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25
Изменить файл CSS средставами JavaScript makedonsky Элементы интерфейса 3 11.11.2010 02:48
А как задавать css стиль на каждый N объект? Randomizer jQuery 4 14.09.2010 23:19
Как применить css ко всем элементам внутри блока MaxB jQuery 12 28.05.2010 07:56