Есть вот такая форма, при выборе к примеру "футболки" должен открыться "блок с футболками", а если выбрать "шорты", то "блок с футболками" должен исчезнуть и открыться "блок с шортами".
Вот такая простенькая задача на JS, но совсем не силен в нем, облазил уже кучу статей и натыкался только на одинокий DIV, а тут их множество.
Все к чему пришел это пример ниже, но тут есть 2 проблемы, если нажать на radio блок появляется, при переключении открывает еще один блок, а этот не исчезает и также если таких radio будет штук 15-20, то JS получится слишком большой.
Надеюсь на вашу помощь, за ранее спасибо!
function Selected(a) {
var label = a.value;
if(label=="kurtki"){
document.getElementById("kurtki").style.display='block';
}
else if(label=="svitshot"){
document.getElementById("svitshot").style.display='block';
}
else if(label=="futbolki"){
document.getElementById("futbolki").style.display='block';
}
else if(label=="shtani"){
document.getElementById("shtani").style.display='block';
}
else if(label=="short"){
document.getElementById("short").style.display='block';
}
}
.deactive{
display:none;
}
<input name="select2" value="kurtki" type="radio" onChange="Selected(this)">Куртки
<input name="select2" value="svitshot" type="radio" onChange="Selected(this)">Свитера
<input name="select2" value="futbolki" type="radio" onChange="Selected(this)">Футболки
<input name="select2" value="shtani" type="radio" onChange="Selected(this)">Штаны
<input name="select2" value="short" type="radio" onChange="Selected(this)">Шорты
<div id='kurtki' class="deactive">блок с куртками</div>
<div id='svitshot' class="deactive">блок с свитерами</div>
<div id='futbolki' class="deactive">блок с футболками</div>
<div id='shtani' class="deactive">блок со штанами</div>
<div id='short' class="deactive">блок с шортами</div>
Для блоков нужно добавить общий класс и можно сделать более универсально :
document.querySelectorAll('[name=select2]').forEach(s => {
s.addEventListener('change', function() {
document.querySelectorAll('.someClass').forEach(d => d.classList.add('deactive'));
document.getElementById(this.value).classList.remove('deactive');
});
});
.deactive {
display: none;
}
<input name="select2" value="kurtki" type="radio">Куртки
<input name="select2" value="svitshot" type="radio">Свитера
<input name="select2" value="futbolki" type="radio">Футболки
<input name="select2" value="shtani" type="radio">Штаны
<input name="select2" value="short" type="radio">Шорты
<div id='kurtki' class="someClass deactive">блок с куртками</div>
<div id='svitshot' class="someClass deactive">блок с свитерами</div>
<div id='futbolki' class="someClass deactive">блок с футболками</div>
<div id='shtani' class="someClass deactive">блок со штанами</div>
<div id='short' class="someClass deactive">блок с шортами</div>
Самый простой вариант, создать функцию, в которой будут скрываться все блоки и вызывать в начале функции Selected
, так все блоки будут скрыты всегда перед тем, как будет показан новый. Можно также тело из функции hideAllBlock
перенести в функцию Selected
.
function hideAllBlock() {
document.getElementById("short").style.display = 'none';
document.getElementById("shtani").style.display = 'none';
document.getElementById("futbolki").style.display = 'none';
document.getElementById("svitshot").style.display = 'none';
document.getElementById("kurtki").style.display = 'none';
}
function Selected(a) {
hideAllBlock();
document.getElementById(a.value).style.display = 'block';
}
.deactive {
display: none;
}
<input name="select2" value="kurtki" type="radio" onChange="Selected(this)">Куртки
<input name="select2" value="svitshot" type="radio" onChange="Selected(this)">Свитера
<input name="select2" value="futbolki" type="radio" onChange="Selected(this)">Футболки
<input name="select2" value="shtani" type="radio" onChange="Selected(this)">Штаны
<input name="select2" value="short" type="radio" onChange="Selected(this)">Шорты
<div id='kurtki' class="deactive">блок с куртками</div>
<div id='svitshot' class="deactive">блок с свитерами</div>
<div id='futbolki' class="deactive">блок с футболками</div>
<div id='shtani' class="deactive">блок со штанами</div>
<div id='short' class="deactive">блок с шортами</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не скролится страница после нажатия на логоПриходится 10 раз провернуть колесико чтоб начался скрол
Есть программа, где по нажатию на кнопку можно загрузить файлКак сделать так, чтобы можно было файл просто перетащить на окно и он загрузился?