Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   показать слой при выборе в списке (https://javascript.ru/forum/dom-window/31489-pokazat-slojj-pri-vybore-v-spiske.html)

zerojava 09.09.2012 23:58

показать слой при выборе в списке
 
Всем доброй ночи... Я не владею JavaScript у меня всего лишь есть скрипт который отображает определенный слой <div> при выборе в выпадающем списке соответствующего значения. Все работает, но только для одного списка, подскажите пожалуйста как можно "подкрутить" данный скрипт для нескольких выпадающих списков на странице.

<script>
function Selected(a) {
	var label = a.value;
	if (label==1) {
		document.getElementById("Label1").style.display='block';
		document.getElementById("Label2").style.display='none';
		document.getElementById("Label3").style.display='none';
		document.getElementById("Label4").style.display='none';		
	} else if (label==2) {
		document.getElementById("Label1").style.display='none';
		document.getElementById("Label2").style.display='block';
		document.getElementById("Label3").style.display='none';
		document.getElementById("Label4").style.display='none';		
	} else if (label==3) {
		document.getElementById("Label1").style.display='none';
		document.getElementById("Label2").style.display='none';
		document.getElementById("Label3").style.display='block';
		document.getElementById("Label4").style.display='none';
	} else if (label==4) {
		document.getElementById("Label1").style.display='none';
		document.getElementById("Label2").style.display='none';
		document.getElementById("Label3").style.display='none';
		document.getElementById("Label4").style.display='block';		
	} else {
		document.getElementById("Label1").style.display='none';
		document.getElementById("Label2").style.display='none';
		document.getElementById("Label3").style.display='none';
		document.getElementById("Label4").style.display='none';
	}	
}
</script>

<form> 

<select name="layer" aria-required="true" onChange="Selected(this)">
<option value="0" selected="selected">no layer</option>
<option value="1">layer 1</option>
<option value="2">layer 2</option>
<option value="3">layer 3</option>
<option value="4">layer 4</option>
</select>

<div id='Label1' style='display: none;'><span class="note">layer 1</div>
<div id='Label2' style='display: none;'><span class="note">layer 2</div>
<div id='Label3' style='display: none;'><span class="note">layer 3</div>
<div id='Label4' style='display: none;'><span class="note">layer 4</div>

</form>

lord2kim 10.09.2012 00:29

zerojava,
<script>
function Selected(a, div) {
    var label = a.value;
    if (label==1) {
        document.getElementById(div+"1").style.display='block';
        document.getElementById(div+"2").style.display='none';
        document.getElementById(div+"3").style.display='none';
        document.getElementById(div+"4").style.display='none';    
    } else if (label==2) {
        document.getElementById(div+"1").style.display='none';
        document.getElementById(div+"2").style.display='block';
        document.getElementById(div+"3").style.display='none';
        document.getElementById(div+"4").style.display='none';    
    } else if (label==3) {
        document.getElementById(div+"1").style.display='none';
        document.getElementById(div+"2").style.display='none';
        document.getElementById(div+"3").style.display='block';
        document.getElementById(div+"4").style.display='none';
    } else if (label==4) {
        document.getElementById(div+"1").style.display='none';
        document.getElementById(div+"2").style.display='none';
        document.getElementById(div+"3").style.display='none';
        document.getElementById(div+"4").style.display='block';       
    } else {
        document.getElementById(div+"1").style.display='none';
        document.getElementById(div+"2").style.display='none';
        document.getElementById(div+"3").style.display='none';
        document.getElementById(div+"4").style.display='none';
    }  
}
</script>
 
<form>
 
<select name="layer" aria-required="true" onChange="Selected(this, 'Label')">
<option value="0" selected="selected">no layer</option>
<option value="1">layer 1</option>
<option value="2">layer 2</option>
<option value="3">layer 3</option>
<option value="4">layer 4</option>
</select>
 
<div id='Label1' style='display: none;'><span class="note">layer 1</span></div>
<div id='Label2' style='display: none;'><span class="note">layer 2</span></div>
<div id='Label3' style='display: none;'><span class="note">layer 3</span></div>
<div id='Label4' style='display: none;'><span class="note">layer 4</span></div>

<select name="layer2" aria-required="true" onChange="Selected(this, 'div')">
<option value="0" selected="selected">no layer</option>
<option value="1">layer 1</option>
<option value="2">layer 2</option>
<option value="3">layer 3</option>
<option value="4">layer 4</option>
</select>
 
<div id='div1' style='display: none;'><span class="note">layer 1</span></div>
<div id='div2' style='display: none;'><span class="note">layer 2</span></div>
<div id='div3' style='display: none;'><span class="note">layer 3</span></div>
<div id='div4' style='display: none;'><span class="note">layer 4</span></div>

</form>

bes 10.09.2012 00:46

<style>
	.next div {
		display: none;
	}
	.vis {
		display: block !important
	}
</style>

<script>
	function Selected(sel) {
		var next = sel.nextSibling.nextSibling; //nextElementSibling;
		var elems = next.getElementsByClassName('vis');//сделать кроссбраузерной
		if (elems.length != 0) {
			elems[0].className = '';
		}
		if (sel.selectedIndex != 0) {
			next.children[sel.selectedIndex - 1].className = 'vis';
		} 
	}
</script>

<form> 

<select name="layer" aria-required="true" onChange="Selected(this)">
	<option value="0" selected="selected">no layer</option>
	<option value="1">layer 1</option>
	<option value="2">layer 2</option>
	<option value="3">layer 3</option>
	<option value="4">layer 4</option>
</select>

<div class="next">
	<div id='Label1'><span class="note">layer 1</div>
	<div id='Label2'><span class="note">layer 2</div>
	<div id='Label3'><span class="note">layer 3</div>
	<div id='Label4'><span class="note">layer 4</div>
</div>

<select name="layer" aria-required="true" onChange="Selected(this)">
	<option value="0" selected="selected">no layer</option>
	<option value="1">layer 1</option>
	<option value="2">layer 2</option>
	<option value="3">layer 3</option>
	<option value="4">layer 4</option>
</select>

<div class="next">
	<div id='Label1'><span class="note">layer 1</div>
	<div id='Label2'><span class="note">layer 2</div>
	<div id='Label3'><span class="note">layer 3</div>
	<div id='Label4'><span class="note">layer 4</div>
</div>




</form>

zerojava 10.09.2012 00:52

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

lord2kim 10.09.2012 00:56

zerojava, а что вам мешает добавить/убрать элементы из списков и соответствующие слои из div-ов

zerojava 10.09.2012 01:02

Спасибо большое, это как раз то что нужно :)

zerojava 10.09.2012 01:08

Цитата:

Сообщение от lord2kim (Сообщение 203895)
zerojava, а что вам мешает добавить/убрать элементы из списков и соответствующие слои из div-ов

тоже разобрался, спасибо за помощь!

zerojava 10.09.2012 21:30

Подскажите пожалуйста еще... Как сделать чтобы к примеру первый слой всегда отображался по умолчанию. Если в выпадающем списке отсутствует опция "no layer"

bes 10.09.2012 22:04

<style>
	.next div {
		display: none;
	}
	.vis {
		display: block !important
	}
</style>

<script>
	function Selected(sel) {
		var next = sel.nextSibling.nextSibling; //nextElementSibling;
		var elems = next.getElementsByClassName('vis');//сделать кроссбраузерной
		if (elems.length != 0) {
			elems[0].className = '';
		}
		if (sel.options[0].text == 'no layer') {
			if (sel.selectedIndex != 0) {
				next.children[sel.selectedIndex - 1].className = 'vis';
			}
		} else {
			next.children[sel.selectedIndex].className = 'vis';
		}
	}
</script>

<form> 

<select name="layer" aria-required="true" onChange="Selected(this)">
	<option value="0" selected="selected">no layer</option>
	<option value="1">layer 1</option>
	<option value="2">layer 2</option>
	<option value="3">layer 3</option>
	<option value="4">layer 4</option>
</select>

<div class="next">
	<div id='Label1'><span class="note">layer 1</div>
	<div id='Label2'><span class="note">layer 2</div>
	<div id='Label3'><span class="note">layer 3</div>
	<div id='Label4'><span class="note">layer 4</div>
</div>

<select name="layer" aria-required="true" onChange="Selected(this)">
	<option value="1">layer 1</option>
	<option value="2">layer 2</option>
	<option value="3">layer 3</option>
	<option value="4">layer 4</option>
</select>

<div class="next">
	<div id='Label1' class="vis"><span class="note">layer 1</div>
	<div id='Label2'><span class="note">layer 2</div>
	<div id='Label3'><span class="note">layer 3</div>
	<div id='Label4'><span class="note">layer 4</div>
</div>




</form>

zerojava 10.09.2012 22:11

bes еще раз большое Вам спасибо!


Часовой пояс GMT +3, время: 05:26.