<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 без кучи писанины ))))