Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.12.2015, 11:59
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Подсвечивание активного сейчас пункта меню
День добрый.
Есть вот такая разметка
Код:
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <meta http-equiv="Content-Language" content="ru">
  <title>test</title>
  <style>
  body{
      font-family: Verdana, Geneva, sans-serif;
  }

  .one-section{
    display: inline-block;
    position: relative;
    margin: 10px;
    margin-top: 20px;
    padding: 10px;
    padding-left: 20px;
    padding-right: 20px;
    background: none;
    color: #000000;
    border: 1px dotted #3366FF;
    border-radius: 3px;
    -webkit-border-radius: 3px;
    width: 94%;
    height: auto;
}
.os-head{
   color: #3366FF;
   line-height: 20px;
   background: white;
   padding-left: 10px;
   padding-right: 10px;
   font-size: 16px;
   font-weight: bold;
   position: relative;
   left: -10px;
   top:-22px;
   display: inline;
   width: content;
   z-index: 100;
}
.os-content{
   background: none;
   border: 0px none;
   position: relative;
   display: block;
   top: -10px;
   height: auto;
}
.os-section-name{
    width: auto;
    line-height: 40px;
    font-weight: bold;
    letter-spacing: 1px;
    color: #3366FF;
    font-size: 18px;
    margin: 0px 20px;
    padding: 0px;
    display: inline;
}
.os-setting-link{
    color: #3366FF;
    text-decoration: none;
}
.os-settings-li {
	text-decoration: none;
	line-height: 30px;
	background: #ffffff;
	list-style-type: none;
	text-transform: capitalize;
	margin-left: 10px;
    margin-bottom: 10px;
    margin-top: 5px;
	padding-left: 10px;
    font-size: 14px;
    font-weight: bold;
    border-left: 4px solid rgba(102,0,255,0.05);
}

.os-settings-li:hover {
	background: rgba(153, 204, 255, 0.1);
    text-transform: Uppercase;
	font-weight: bold;
}
.maintbl{
    width: 100%;
    border-collapse: collapse;
    border: 0px none;
}
.tdleft{
    width: 20%;
    height: 100%;
    border-left: 0px none;
    border-top: 0px none;
    border-right: 1px dotted black;
    border-bottom: 0px none;
}
.tdright{
    width: 80%;
    height: 100%;
    border: 0px none;
}
.content{
    background: none;
    width: 98%;
    height: 98%;
}

  </style>
  <script>
  function onoff(num) {
        max=50;

        for(t=1;t<=max;t++) {
            if (t==num) {
				document.getElementById(t).style.display='';
            }

            else {
            document.getElementById(t).style.display='none';
            }
        }
    }
  </script>
</head>

<body>
   <table class="maintbl">
    <tr>
        <td class="tdleft">
            <a class="os-setting-link" href="javascript:void(0)" onClick="onoff(1);"><li class="os-settings-li">Пункт 1</li></a>
            <a class="os-setting-link" href="javascript:void(0)" onClick="onoff(2);"><li class="os-settings-li">Пункт 2</li></a>
            <a class="os-setting-link" href="javascript:void(0)" onClick="onoff(3);"><li class="os-settings-li">Пункт 3</li></a>
            <a class="os-setting-link" href="javascript:void(0)" onClick="onoff(4);"><li class="os-settings-li">Пункт 4</li></a>
        </td>
        <td class="right">
                    <div class="content" id="1" style="padding-left:7px;padding-top:10px;width: 98%; display: none;">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 1</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="2" style="padding-left:7px;padding-top:10px;width: 98%; display: none;">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 2</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="3" style="padding-left:7px;padding-top:10px;width: 98%; display: none;">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 3</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="4" style="padding-left:7px;padding-top:10px;width: 98%; display: none;">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 4</font></h2></strong></center><br>

                        </div>
                    </div>
        </td>
    </tr>
   </table>
</body>

</html>
То есть в левой половине пункты меню, в правой дивы с содержимым по каждому пункту меню.

Как сделать так, чтобы пункт меню подсвечивался, когда показывается соответствующий ему див с контентом.

То есть если показывается
Код:
<div class="content" id="2"...
, например, то
Код:
<a class="os-setting-link" href="javascript:void(0)" onClick="onoff(2);"><li class="os-settings-li">Пункт 2</li></a>
было бы выделено фоном цветом, и так по каждому пункту.
И чтобы выделен был только соответствующий показываемому диву с контентом пункт?
Ответить с цитированием
  #2 (permalink)  
Старый 23.12.2015, 12:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dpts,
странная вёрстка без ul и обычно ссылка в li а не на оборот... если поискать открывашка будет с десяток вариантов того что вы хотите ...
Ответить с цитированием
  #3 (permalink)  
Старый 23.12.2015, 12:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Открывашка 241 меню с подсветкой активного пункта
dpts,

center font эти теги тоже бы выкинуть ...
<!DOCTYPE HTML>
<html>

<head>
   <meta charset="utf-8">
  <meta http-equiv="Content-Language" content="ru">
  <title>test</title>
  <style>
  body{
      font-family: Verdana, Geneva, sans-serif;
  }

  .one-section{
    display: inline-block;
    position: relative;
    margin: 10px;
    margin-top: 20px;
    padding: 10px;
    padding-left: 20px;
    padding-right: 20px;
    background: none;
    color: #000000;
    border: 1px dotted #3366FF;
    border-radius: 3px;
    -webkit-border-radius: 3px;
    width: 94%;
    height: auto;
}
.os-head{
   color: #3366FF;
   line-height: 20px;
   background: white;
   padding-left: 10px;
   padding-right: 10px;
   font-size: 16px;
   font-weight: bold;
   position: relative;
   left: -10px;
   top:-22px;
   display: inline;
   width: content;
   z-index: 100;
}
.os-content{
   background: none;
   border: 0px none;
   position: relative;
   display: block;
   top: -10px;
   height: auto;
}
.os-section-name{
    width: auto;
    line-height: 40px;
    font-weight: bold;
    letter-spacing: 1px;
    color: #3366FF;
    font-size: 18px;
    margin: 0px 20px;
    padding: 0px;
    display: inline;
}
.os-setting-link{
    color: #3366FF;
    text-decoration: none;
}
.os-settings-li {
	text-decoration: none;
	line-height: 30px;
	background: #ffffff;
	list-style-type: none;
	text-transform: capitalize;
	margin-left: 10px;
    margin-bottom: 10px;
    margin-top: 5px;
	padding-left: 10px;
    font-size: 14px;
    font-weight: bold;
    border-left: 4px solid rgba(102,0,255,0.05);
}

.os-settings-li:hover {
	background: rgba(153, 204, 255, 0.1);
    text-transform: Uppercase;
	font-weight: bold;
}
.maintbl{
    width: 100%;
    border-collapse: collapse;
    border: 0px none;
}
.tdleft{
    width: 20%;
    height: 100%;
    border-left: 0px none;
    border-top: 0px none;
    border-right: 1px dotted black;
    border-bottom: 0px none;
}
.tdright{
    width: 80%;
    height: 100%;
    border: 0px none;
}
.content{
    display: none;
    background: none;
    width: 98%;
    height: 98%;
}
.os-settings-li.show{
  background-color: #FFA500;
}
.content.show{
  display: block;
  padding-left:7px;
  padding-top:10px;
  width: 98%;
}

  </style>
  <script>
   window.addEventListener('DOMContentLoaded', function() {
       var li = document.querySelectorAll('.os-settings-li'),
           div = document.querySelectorAll('.content');
       [].forEach.call(li, function(el, i) {
           el.addEventListener('click', function() {
               [].forEach.call(div, function(d, k) {
                   i != k && (li[k].classList.remove('show'), d.classList.remove('show'));
               });
               el.classList.toggle('show')
               div[i].classList.toggle('show')
           });
       });
   });
  </script>
</head>

<body>
   <table class="maintbl">
    <tr>
        <td class="tdleft">
            <ul>
            <li class="os-settings-li">Пункт 1</li>
            <li class="os-settings-li">Пункт 2</li>
            <li class="os-settings-li">Пункт 3</li>
            <li class="os-settings-li">Пункт 4</li>
            </ul>
        </td>
        <td class="right">
                    <div class="content" id="1" style=" ">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 1</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="2" style=" ">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 2</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="3" style=" ">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 3</font></h2></strong></center><br>

                        </div>
                    </div>
                    <div class="content" id="4" style=" ">
                        <div class="steeldetail_block" id="sdb2">
                            <center><strong><h2><font color="#595959">ПРО&nbsp;ПУНКТ 4</font></h2></strong></center><br>

                        </div>
                    </div>
        </td>
    </tr>
   </table>


</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2015, 08:16
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Благодарю.
Все отлично работает.
Ответить с цитированием
  #5 (permalink)  
Старый 09.01.2016, 10:45
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

В продолжение
А как сделать так, чтобы если вызов страницы происходит с параметром сразу показывался соответствующий раздел.

То-есть допустим, если страница вызывается:
1. settings.htm?view=1 - то сразу показывается
<div class="content" id="1" style=" ">

2. settings.htm?view=2 - то сразу показывается
<div class="content" id="2" style=" ">


и т.д.

Если никакого параметра view не передано, - то автоматом показывается
<div class="content" id="1" style=" ">


и выделяется соответствующий пункт
<li class="os-settings-li">
?

Последний раз редактировалось dpts, 09.01.2016 в 10:52.
Ответить с цитированием
  #6 (permalink)  
Старый 09.01.2016, 16:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dpts, парсить
window.location.search и ставить условие в строку 134 if(тра-та-та) el.classList.toggle('show')
Ответить с цитированием
  #7 (permalink)  
Старый 12.01.2016, 08:15
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от рони Посмотреть сообщение
dpts, парсить
window.location.search и ставить условие в строку 134 if(тра-та-та) el.classList.toggle('show')
Учитывая, что в JS я полнейший ноль, парсить window.location.search - "не ближний свет".
Значение параметра считывается VBS-ом и вполне нормально может быть передано в js.
То есть js-ом надо только показать определенный div и подсветить соответствующий ему li.
Ответить с цитированием
  #8 (permalink)  
Старый 12.01.2016, 08:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

getParameterByName поиск параметров в location.search
dpts,

http://stackoverflow.com/questions/9...-in-javascript
window.addEventListener('DOMContentLoaded', function() {
      function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}


       var view = +getParameterByName('view')||1,
           li = document.querySelectorAll('.os-settings-li'),
           div = document.querySelectorAll('.content');
       [].forEach.call(li, function(el, i) {
           el.addEventListener('click', function() {
               [].forEach.call(div, function(d, k) {
                   i != k && (li[k].classList.remove('show'), d.classList.remove('show'));
               });
               el.classList.toggle('show')
               div[i].classList.toggle('show')
           });
       });
       li[--view].click()
   });

Последний раз редактировалось рони, 12.01.2016 в 08:47.
Ответить с цитированием
  #9 (permalink)  
Старый 12.01.2016, 09:14
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Почти работает
window.addEventListener('DOMContentLoaded', function() {
      function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}


       var view = +getParameterByName('view')||1,
           li = document.querySelectorAll('.os-settings-li'),
           div = document.querySelectorAll('.content');
       [].forEach.call(li, function(el, i) {
           el.addEventListener('click', function() {
               [].forEach.call(div, function(d, k) {
                   i != k && (li[k].classList.remove('show'), d.classList.remove('show'));
               });
               el.classList.toggle('show')
               div[i].classList.toggle('show')
           });
       });
       li[--view].click()
       document.getElementById(view+1).style.display='block'
   });


Действительно при загрузке показывает соответствующий див и подсвечивает соответствующий ли.
Но теперь при клике на ЛИ не показывает соответствующий див, не снимает подсветку с ЛИ.

Не было проблемы получить значение из адресной строки, она без проблем берется vbs-ом и условие про есть она или нет проверяется vbs-ом на выходе из vbs-а имеем переменную содержащую цифру 1, 2, 3...n.
Эту переменную я могу скормить javascript-у.
Проблема показать при загрузке соответствующий див+подсветить соответствующий ли+чтобы "переключатель" в предыдущем варианте скрипта продолжал работать.
Ответить с цитированием
  #10 (permalink)  
Старый 12.01.2016, 09:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dpts,
зачем строка 23?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение активного пункта меню sergofedor06 jQuery 15 23.11.2015 12:15
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Выделение активного пункта меню при ajax запросе faecker AJAX и COMET 6 04.09.2014 19:14
анимация активного пункта меню rustleofstars Элементы интерфейса 0 27.04.2013 17:56