Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
1

При выборе select показывать последующий DIV не в зависимости от value и прочей "ерунды"

10.02.2015, 17:47. Показов 3570. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые профессионалы и профессиональные любители!

...ребят, помогите пжлста разобраться в одном очень не лёгком(для меня) вопросе...суть в следующем:

Есть список(select):
HTML5
1
2
3
4
5
6
7
<select id="steklo_12" >
    <option value="0" selected="selected">Стандартное стекло</option>
    <option value="1">Нестандартное стекло</option>
    <option value="2">Супер нестандартное стекло</option>
    <option value="3">и ещё бог знает какое стекло, таких стекол может быть куча</option>
    ...
</select>
И есть блоки div:
HTML5
1
2
3
4
5
6
<div class="blockDiv">
<div class="divSteklo_0" style="display: block;"><img src="./прозрачное-стекло-0.jpg" /></div>
<div class="divSteklo_1" style="display: none;"><img src="./стекло-1.jpg" /></div>
<div class="divSteklo_2" style="display: none;"><img src="./стекло-2.jpg" /></div>
<div class="divSteklo_3" style="display: none;"><img src="./стекло-3.jpg" /></div>
</div>
И есть джаваскрипта, которая всё это дело(что выше) связывает:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    <script type="text/javascript">
        jQuery(document).ready(function () {
          var opt = (window.location.search).replace("?", ""),
          select = document.getElementById("steklo_12"),
          options = select.options;
          for (var i = 0; i < options.length; i++) { if (options[i].id == opt) {break;} }
          i = 0 //с какого блока показывать
          select.selectedIndex = i;
          function go2() {
            var b = {
            0: ".divSteklo_0",
            1: ".divSteklo_1",
            2: ".divSteklo_2",
            3: ".divSteklo_3"
            ....
            }, c = select.selectedIndex,
            a;
            for (a in b)
            {var elems = document.querySelectorAll(b[a]);
              Array.prototype.forEach.call(elems, function(el)
                { el.style.display = c == a? "block": "none" }
              );
            }
          };
          select.onchange = go2;
          go2.call(select);
          
        });
    </script>
Прикол тут в следующем:
Хочу замутить так, чтобы при выборе option, допустим option по счёту 3й и чтобы открывался DIV(т.е. display:block был) который по счёту тоже 3й, кол-во option-ов и DIV-ов всегда одинаковое - я почти добился такого "эффекта" но вот эта конструкция:
Javascript
1
2
3
4
5
6
7
var b = {
            0: ".divSteklo_0",
            1: ".divSteklo_1",
            2: ".divSteklo_2",
            3: ".divSteklo_3"
            ....
            }
...меня просто убивает, можно ли сделать какой нибудь массив/цикл, чтобы не прописывать в дебильной конструкции(которая выше) классы (divSteklo_3, divSteklo_4....) а чтобы допустим эти классы сами добавлялись так сказать динамически(от того, сколько дивов)?
Я в этом деле олень, так что прошу не дёргать за рога а направить на путь истинный - я очень-приочень прошу помощи, а то на голове почти волос не осталось и те уже посидели;((
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2015, 17:47
Ответы с готовыми решениями:

При выборе какого-то значения в select'e нужно показывать другой select рядом
Здравствуйте, я полный ноль в js, но нужно следующее: На сайте есть разделы. При выборе какого-то...

Появление div при выборе select (НАСТРОЙКА)
Вообщем есть меню, в котором при выборе определенного селекта, появляется выбранный div. Теперь,...

Значение по умолчанию, либо удаление select при выборе другого select
&lt;el-form-item label=&quot;Тип оплаты&quot; :label-width=&quot;formLabelWidth&quot; prop=&quot;oplata&quot;...

При выборе элемента в <select> менять содержимое другого <select>
Может кто-то подсказать. У меня есть select на форме. Например: &lt;select name=day_s size=1&gt;...

4
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
10.02.2015, 19:20 2
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
<body>
    <select id="steklo_12" >
        <option value="0" selected="selected">Стандартное стекло</option>
        <option value="1">Нестандартное стекло</option>
        <option value="2">Супер нестандартное стекло</option>
        <option value="3">и ещё бог знает какое стекло, таких стекол может быть куча</option>
    </select>
    <div class="blockDiv">
        <div class="divSteklo_0" style="display: block;"><img src="./прозрачное-стекло-0.jpg" alt="стекло-0" /></div>
        <div class="divSteklo_1" style="display: none;"><img src="./стекло-1.jpg" alt="стекло-1" /></div>
        <div class="divSteklo_2" style="display: none;"><img src="./стекло-2.jpg" alt="стекло-2" /></div>
        <div class="divSteklo_3" style="display: none;"><img src="./стекло-3.jpg" alt="стекло-3" /></div>
    </div>
    <script type="text/javascript">
        $(function() {
            $('#steklo_12').change(function() {
                $('.blockDiv div').hide();
                $('.blockDiv div:eq(' + $(this).val() + ')').show();
            });
        });
    </script>
</body>
</html>
Тест: https://jsfiddle.net/vadim_Lasso/vo2aqqvg/1/
1
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 19:44  [ТС] 3
LASSO Спасибо тебе большое, но немного не то, вот можно сделать так чтобы option и div не связывались по этому параметру $(this).val(), просто value у option может быть разная(не обязательно числовая) - вот исходя из этого и надо, чтобы option и div связывались по допустим index-у т.е. выбрал кто нибудь option по порядку идущий вторым и открывается div по порядку 2 ну и 3,4 и т.д., у меня мозгов не хватает так сделать, может чем подскажешь на этот счёт?...заранее спасибо!
0
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
10.02.2015, 21:22 4
Лучший ответ Сообщение было отмечено PiVar как решение

Решение

Просто поменять $(this).val() на $(this)[0].selectedIndex

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
<body>
    <select id="steklo_12" >
        <option value="0" selected="selected">Стандартное стекло</option>
        <option value="1">Нестандартное стекло</option>
        <option value="2">Супер нестандартное стекло</option>
        <option value="3">и ещё бог знает какое стекло, таких стекол может быть куча</option>
    </select>
    <div class="blockDiv">
        <div class="divSteklo_0" style="display: block;"><img src="./прозрачное-стекло-0.jpg" alt="стекло-0" /></div>
        <div class="divSteklo_1" style="display: none;"><img src="./стекло-1.jpg" alt="стекло-1" /></div>
        <div class="divSteklo_2" style="display: none;"><img src="./стекло-2.jpg" alt="стекло-2" /></div>
        <div class="divSteklo_3" style="display: none;"><img src="./стекло-3.jpg" alt="стекло-3" /></div>
    </div>
    <script type="text/javascript">
        $(function() {
            $('#steklo_12').change(function() {
                $('.blockDiv div').hide();
                $('.blockDiv div:eq(' + $(this)[0].selectedIndex + ')').show();
            });
        });
    </script>
</body>
</html>
Тест: https://jsfiddle.net/vadim_Lasso/vo2aqqvg/2/
1
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 21:32  [ТС] 5
ПОТРЯСАЮЩЕ! Блин, ковырялся почти сутку не засыпая а тут вон в чём дело оказалось) LASSO, спасибо и низкий поклон тебе!!!
0
10.02.2015, 21:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2015, 21:32
Помогаю со студенческими работами здесь

Как сделать чтобы при выборе одного варианта из select другие select скрывались
Здравствуйте. Делаю сайт для парикмахерской. Нужно сделать страницу для онлайн записи где...

Как при выборе определённого значения поля select показать новое поле select
Такая задача, у меня есть список значений в поле типа select. Value1 Value2 Value3 Value4 При...

Отфильтровать элементы <div> в зависимости от выбранных <select>.
Здравствуйте, можете показать пример сортировки на JS? Что есть: Есть 2 select с значениями: 1...

Как при выборе значения в select выполнить функцию php и передать в ей аргумент (значение select)
Вообще, я хочу сделать выборку в таблице. После выбора в &lt;select&gt;, в таблице должны остаться запись...

При выборе первого select-a на втором select-e должны отображаться те строки которое касается выбранному
У меня есть в таблице три поля(id,parent_id,name_gu),и есть еще два select.Теперь, хотел спросить у...

Нужно сделать так чтобы при выборе некоторых значений в первом select, изменялись значения второго select
Помогите пожалуйста мне нужно сделать так чтобы при выборе некоторых значений в первом select,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru