Изменение определенного класа в зависимости от другого
Добрый день. Требуется совет.
Верстаю тренировочный сайтик: http://projects.wkornilow.org.ua/sommelier/ Суть такова. Есть первый блок "Бокал". В зависимости от типа бокала в следующем блоке "Тип" выбирается соответствующее значение "Аперетив, диджестив" и так далее. Так вот собственно вопрос. Каким образом можно реализовать функционал, чтобы в зависимости от выбранного типа бокала менялись (например выделялся один пункт з списка, а остальные становились неактивными). Прошу натолкните на путь истинный) |
Я бы делал так:
var glasses = [ { aperitif = true, hot = true, milk = false },{ aperitif = true, hot = false, milk = true }]; now - получаете индекс текущего бокала glasses[now] - получите свойства для этого бокала, проходитесь по ним и проставляете классы для элементов в списках других блоков. |
Цитата:
|
Мне бы были интересны разные варианты, так как только начинаю экспериментировать с JS после прочтения учебника.
|
Также интересует вопрос, как определить какой именно в данный момент показывает слайдер.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
<style> ul { display: inline-block; width: 200px; } .that { font-weight: bold; } .active { color: #333; } .unactive { color: #aaa; } </style> <input type="button" id="change" value="сменить набор" /> <br /> <ul id="sets"> <li class="that">первый бокал</li> <li>второй бокал</li> <li>третий бокал</li> </ul> <ul id="ingradients"> <li id="aperitif" class="active">аперитив</li> <li id="hot" class="active">горячее</li> <li id="milk" class="unactive">молоко</li> </ul> <script> var glasses = [ { aperitif : true, hot : true, milk : false },{ aperitif : true, hot : false, milk : true },{ aperitif : false, hot : true, milk : false } ]; var now = 0; document.getElementById('change').onclick = function() { if (++now > glasses.length -1) now = 0; document.getElementsByClassName('that')[0].className = ''; document.getElementById('sets').getElementsByTagName('li')[now].className = 'that'; var set = glasses[now]; for (var key in set) { document.getElementById(key).className = (set[key] === true) ? 'active': 'unactive'; } } </script> |
BETEPAH, спасибо за помощь. С этим все понятно.
Но все равно есть несколько вопрос (тапком прошу не бить;)). Вопрос 1: Выношу скрипт в отдельный *.js файл и подключаю его в header. При этом скрипт не работает. Я так понимаю что для правильной работы скрипта необходимо использовать window.onload. Я прав? Если нет, как добиться чтобы скрипт который я вынес в отдельный файл работал. Вопрос 2: Если вы переходили по ссылке, которую я размещал в 1 сообщении, там видно что есть 4 списка: 1) Тип бокала 2) Тип напитка 3) Количество градусов 4) Основа напитка В зависимости от выбранного бокала соответственно меняется 2, 3, 4 список. В приведенном Вами выше коде меняется только второй список. Насколько я понимаю сделать зависимость также для 3 и 4 списка, можно добавив в массив вложенные массивы, например так: var glasses = [ { apperetive: true[{ nonalcohol: false, lowdegree: true, middledegree: false, highdegree: true }], didjestive: false, hot: false, milk: false, desert: false, sloistie: false, deizi: false, dzuleti: false }, { apperetive: false, didjestive: false, hot: false, milk: true, desert: false, sloistie: false, deizi: false, dzuleti: false }, { apperetive: false, didjestive: false, hot: false, milk: false, desert: false, sloistie: false, deizi: false, dzuleti: true } ]; Скажите, так правильно реализовывать, или есть иной способ? |
Цитата:
|
Часовой пояс GMT +3, время: 11:17. |