Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.05.2018, 10:43
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Выделение выбранного пункта
Доброго времени суток!
Реализовано отображение пунктов при нажатии на которые изменяется контент страницы. Т.е. при нажатии на "Пункт 1" содержание страницы одно, при нажатии на "Пункт 2" содержание на этой же странице другое.
<div class="installation">
			<div class="installation_element">
			
				<a href="#" onclick="openbox('box1'); return false" class="link">Пункт 1</a>
			</div>
			<div class="installation_element">
				<a href="#" onclick="openbox('box2'); return false" class="link">Пункт 2</a>
			</div>
			<div class="installation_element">
				<a href="#" onclick="openbox('box3'); return false" class="link">Пункт 3</a>
			</div>
		</div>

function openbox(id) {
  var all = document.querySelectorAll(".block-of-text");
  for (var i = 0; i < all.length; i++) {
    if (all[i].id == id) {
      all[i].style.display = (all[i].style.display == 'none')? 'block' : 'active';
      
    } else {
      all[i].style.display = 'none';
    }
  }
}

При нажатии на пункт устанавливается стиль display: block;.
Подскажите, каким образом сделать так, чтобы у выделенного пункта отображалось подчеркивание внизу (скрин "Смена контента")? Спасибо.
Изображения:
Тип файла: jpg Смена контента.jpg (7.9 Кб, 4 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2018, 11:07
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var elt = document.querySelectorAll(".installation_element");
elt.forEach((el, i)=> el.onclick = e =>elt.forEach((el, n)=>el.style.borderBottom = n==i?'1px solid gray':'0px'));
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2018, 11:44
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

j0hnik, спасибо что откликнулись.
Данный вариант решает поставленную задачу. Спасибо Вам огромное
Подскажите, возможно сделать так, чтобы изначально отображаемый пункт (в данном случае "Пункт 1") был подчеркнут?
Т.е. по умолчанию при открытии страницы отображается контент "Пункт 1", но пункт не подчеркнут, а подчеркивается если на него кликнуть.
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2018, 11:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

_marisha,
форум - поиск - открывашка
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2018, 11:54
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var elt = document.querySelectorAll(".installation_element");
elt.forEach((el, i)=> el.onclick = e =>elt.forEach((el, n)=> n==i?el.classList.add('borderB'):el.classList.remove('borderB')));


тогда лучше так, дать первому блоку класс borderB и задать ему стиль, при клике он будет применяться к нужному эл-ту
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2018, 13:07
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

j0hnik, то что нужно, супер! Спасибо Вам огромное
Итог:
<div class="installation">
			<div class="installation_element borderB">
				<a href="#" onclick="openbox('box1'); return false" class="link">Пункт 1</a>
			</div>
			<div class="installation_element">
				<a href="#" onclick="openbox('box2'); return false" class="link">Пункт 2</a>
			</div>
			<div class="installation_element">
				<a href="#" onclick="openbox('box3'); return false" class="link">Пункт 3</a>
			</div>
		</div>

.borderB
{
	border-bottom: 1px solid gray;
	font-weight: bold;
}

function openbox(id) {
  var all = document.querySelectorAll(".block-of-text");
  for (var i = 0; i < all.length; i++) {
    if (all[i].id == id) {
      all[i].style.display = (all[i].style.display == 'none')? 'block' : 'active'; 
    } else {
      all[i].style.display = 'none';
    }
  }
  var elt = document.querySelectorAll(".installation_element");
  elt.forEach((el, i)=> el.onclick = e =>elt.forEach((el, n)=> n==i?el.classList.add('borderB'):el.classList.remove('borderB')));
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение активного пункта меню sergofedor06 jQuery 15 23.11.2015 12:15
Выделение активного пункта меню lemoral (X)HTML/CSS 1 13.04.2015 08:18
Выделение активного пункта меню при ajax запросе faecker AJAX и COMET 6 04.09.2014 19:14
Подставить значение в action="" в зависимости от выбранного пункта select nkl Элементы интерфейса 2 13.05.2013 14:06
Меню с запоминанием выбранного пункта OlegALL Элементы интерфейса 9 27.12.2010 20:00