Скрыть/показать элементы в зависимости от значения select ов (нескольких)
Необходимо разместить на HTML сайте 2 и более фильтров по которым будет фильтроваться содержимое. Но только с помощью js.
Я мудрил и вот что вышло: Код:
<!DOCTYPE html> |
<!DOCTYPE html> <html> <head> <style> select, div { display: inline-block; } </style> </head> <body> <select id="first"> <option value="0" selected disabled>Не выбрано</option> <option value="1">Авто\Мото</option> <option value="2">Компьютеры</option> <option value="3">Знакомство</option> </select> <div id="second"></div> <script> var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', '); var computers = 'Windows, Mac, Linux'.split(', '); var connexions = 'Love, Meeting, Sex'.split(', '); document.getElementById('first').onchange = function(){ var str = ''; if (this.value == 1) { for (var i = 0; i < autos.length; i++) { str += '<option value="i">' + autos[i]; } } else if (this.value == 2) { for (var i = 0; i < computers.length; i++) { str += '<option value="i">' + computers[i]; } } else if (this.value == 3) { for (var i = 0; i < connexions.length; i++) { str += '<option value="i">' + connexions[i]; } } else return false; document.getElementById('second').innerHTML = '<select>' + str + '</select>'; } </script> </body> </html> |
:write:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> #second { display: none; } </style> </head> <body> <select id="first"> <option value="0" selected >Не выбрано</option> <option value="1">Авто\Мото</option> <option value="2">Компьютеры</option> <option value="3">Знакомство</option> </select> <select id="second"></select> <script> var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', '); var computers = 'Windows, Mac, Linux'.split(', '); var connexions = 'Love, Meeting, Sex'.split(', '); var two = [autos,computers,connexions] document.getElementById('first').onchange = function(){ var select = document.getElementById('second'), j = this.value; select.style.display = "none"; select.options.length = 0; if (j) { var options = two[--j]; for (var i = 0; i < options.length; i++) { select.options[i] = new Option(options[i], i); ; } select.style.display = "inline-block"; } } </script> </body> </html> |
СПАСИБо =) добрые люди :) А как теперь отобразить и прописать содержимое , чтобы при выборе например: BMW X5 - отображался раздел который относиться к разделу BMW X5.
|
Georka,
нужно написать функцию для второго селектора :dance: |
Цитата:
|
рони,
:haha: Ну поогите ) нужно чтобы было так: выбрал категорию авто, раздел BMW и отображалось содержимое с описанием BMW Выбрал категорию компьюеры , раздел windows и там содержимое c описанием windows Плиз хэлп =) |
используй цикл:
<div id='Label1' onclick="updateVis(this.id)">BMW X5</div> <div id='Label2' onclick="updateVis(this.id)">Jaguar F5</div> <div id='Label3' onclick="updateVis(this.id)">Lamborgini</div> <script> function updateVis(){ switch(id){ case 'Label1': for (var i = 1; i<4; i++){ document.getElementById('Label' + i).style.display = 'none'; } document.getElementById("Label1").style.display='b lock'; break; case 'Label2': for (var i = 1; i<4; i++){ document.getElementById('Label' + i).style.display = 'none'; } document.getElementById("Label2").style.display='b lock'; break; default: for (var i = 1; i<4; i++){ document.getElementById('Label' + i).style.display = 'none'; } } </script> |
Зависимые селекты
Цитата:
Georka, :cray: :cray: :cray: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> #second { display: none; } </style> </head> <body> <select id="first"> <option value="0" selected >Не выбрано</option> <option value="1">Авто\Мото</option> <option value="2">Компьютеры</option> <option value="3">Знакомство</option> </select> <select id="second"> <option value="0" selected >Не выбрано</option> </select> <div id='autos1' style='display: none;'>BMW X5</div> <div id='autos2' style='display: none;'>Jaguar F5</div> <div id='autos3' style='display: none;'>Lamborgini Italian</div> <div id='computers1' style='display: none;'>Windows</div> <div id='computers2' style='display: none;'>Mac</div> <div id='computers3' style='display: none;'>Linux</div> <div id='connexions1' style='display: none;'>Love</div> <div id='connexions2' style='display: none;'>Meeting</div> <div id='connexions3' style='display: none;'>Sex</div> <script> (function () { var autos = 'BMW X5, Jaguar F5, Lamborgini Italian'.split(', '); var computers = 'Windows, Mac, Linux'.split(', '); var connexions = 'Love, Meeting, Sex'.split(', '); var two = [autos,computers,connexions]; var group = 'autos,computers,connexions'.split(','); var j; var old; document.getElementById('first').onchange = function(){ var select = document.getElementById('second'); j = this.value; select.style.display = "none"; old && (old.style.display = "none"); select.options.length = 1; if (j) { var options = two[--j]; for (var i = 1; i <= options.length; i++) { select.options[i] = new Option(options[i-1], i); ; } select.style.display = "inline-block"; } } document.getElementById('second').onchange = function(){ old && (old.style.display = "none"); old = document.getElementById(group[j]+this.value); old && (old.style.display = "block"); } })() </script> </body> </html> |
Часовой пояс GMT +3, время: 00:07. |