Показать сообщение отдельно
  #4 (permalink)  
Старый 15.12.2010, 02:22
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

<center>
<div id="container" style="margin-top:200px;">
<select id="select1" style="width:200px;" onchange="arrangeSelects(this)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select> 


<select id="select2"  style="display:none">
<option value="1#1">1_1</option>
<option value="1#2">1_2</option>
<option value="2#1">2_1</option>
<option value="2#2">2_2</option>
<option value="3#1">3_1</option>
<option value="3#2">3_2</option>
</select> 




<select id="select3" style="display:none">
<option value="1#1#1">1_1_1</option>
<option value="1#1#2">1_1_2</option>
<option value="1#2#1">1_2_1</option>
<option value="1#2#2">1_1_2</option>
<option value="2#1#1">2_1_1</option>
<option value="2#1#2">2_1_2</option>
<option value="2#2#1">2_2_1</option>
<option value="2#2#2">2_2_2</option>
<option value="3#1#1">3_1_1</option>
<option value="3#1#2">3_1_2</option>
<option value="3#2#1">3_2_1</option>
<option value="3#2#2">3_2_2</option>
</select> 


<select id="select4"  style="display:none">
<option value="1#1#1#1">1_1_1_1</option>
<option value="1#1#1#2">1_1_1_2</option>
<option value="1#1#2#1">1_1_2_1</option>
<option value="1#1#2#2">1_1_2_2</option>
<option value="1#2#1#1">1_2_1_1</option>
<option value="1#2#1#2">1_2_1_2</option>
<option value="1#2#2#1">1_1_2_1</option>
<option value="1#2#2#2">1_1_2_2</option>
<option value="2#1#1#1">2_1_1_1</option>
<option value="2#1#1#2">2_1_1_2</option>
<option value="2#1#2#1">2_1_2_1</option>
<option value="2#1#2#2">2_1_2_2</option>
<option value="2#2#1#1">2_2_1_1</option>
<option value="2#2#1#2">2_2_1_2</option>
<option value="2#2#2#1">2_2_2_1</option>
<option value="2#2#2#2">2_2_2_2</option>
<option value="3#1#1#1">3_1_1_1</option>
<option value="3#1#1#2">3_1_1_2</option>
<option value="3#1#2#1">3_1_2_1</option>
<option value="3#1#2#2">3_1_2_2</option>
<option value="3#2#1#1">3_2_1_1</option>
<option value="3#2#1#2">3_2_1_2</option>
<option value="3#2#2#1">3_2_2_1</option>
<option value="3#2#2#2">3_2_2_2</option>
</select> 

</div>
<script>

window.onload=function(){
var ind=3 // в первом селекте изначально выбран пункт № ind
con=document.getElementById('container')
sel=new Array()
sel[1]=document.getElementById('select1')
sel[2]=document.getElementById('select2')
sel[3]=document.getElementById('select3')
sel[4]=document.getElementById('select4')
sel[1].options[ind-1].selected=true // выбираем стартовый пункт в первом селекте

arrangeSelects(sel[1])// создаем селекты 2,3,4 исходя из выбранного пункта в первом
}

function arrangeSelects(obj){// сюда передается селект в котором выбрали пункт как объект
var val=obj.options[obj.selectedIndex].value // val - value выбранного пункта
var ar=val.split("#")
var count=ar.length
if(count==4){return false} // если кликнули на четвертый селект ничего не делать


	for (var j=count+1; j<=4; j++){


	if(!document.getElementById('created-select'+j)) // если селекта еще не существует создаем
	{
	var select=document.createElement('select')
	select.id="created-select"+j
	select.style.display="block"
	select.style.width="200px"
	select.style.marginTop="20px"
	select.onchange=function(){arrangeSelects(this)}
	} 
   else 
   {
   var select=document.getElementById('created-select'+j) // если существует убираем из него все пункты
	   select.innerHTML=""
   }


for(var i=0; i<sel[j].options.length; i++){ // далее э-э-э-э-э короче моя логика )))

var v=sel[j].options[i].value
var h=sel[j].options[i].innerHTML

var a=v.split('#')
var c=0

for(var k=0; k<=2; k++){
	if(count>=k+1){
		if(typeof(a[k])!="undefined"){
	
		if(a[k]==ar[k]){c++}
		
		}
	}
}



if(c==count){ 
o=document.createElement('option')
o.value=v
o.innerHTML=h
select.appendChild(o)
}

if(!document.getElementById('created-select'+j)){con.appendChild(select)}
}
}
}

</script>


вот вроде работает
можно легко добавить еще селекты единственная сложность в нумерации value
хотя даже 4 уровня я нигде не видел
думал сначала словами прописать а потом не смог придумать четыря уровня для дерева опций )))))
у тебя я так понимаю страна город область и адрес
))))

а вот если все пункты селектов забить в БД очень даже просто можно их формировать на php без кучи писанины ))))

Последний раз редактировалось bushstas, 15.12.2010 в 02:40.
Ответить с цитированием