@gekon to będzie trochę bardziej skomplikowane. Zauważ że dla każdej opcji z jednego selecta są 4 w następny. Więc w sumie 4 zestawy opcji. Jeśli @timi chce mieć dodatkowo jeszcze jeden select to liczba opcji w nim będzie 4 razy większa niż w drugim
1 select -> 2 select z 4 zestawami opcji dla każdej opcji z pierwszego selecta
3 select -> z 4 zestawami opcji dla każdej z opcji z drugiego selecta czyli w sumie 16 zestawów opcji
Kod
<script type="text/javascript">
function $(arg) {
return document.getElementById(arg);
}
//sel - select w którym będą tworzone opcje
//opt - tablica z opcjami, które będą w select'cie
function addoptions(sel,opt) {
var ct = opt.length;
for(var i = 0; i < ct; i++) {
item = document.createElement("option");
item.value=opt[i];
item.appendChild(document.createTextNode(opt[i]));
sel.appendChild(item);
}
}
//elem - select, level - który select
function show(elem,level) {
var sid = new Array("second","third");
var tree = new Array(
new Array( //drugi select
new Array("opcja 011","opcja 012","opcja 013","opcja 014"),
new Array("opcja 021","opcja 022","opcja 023","opcja 024"),
new Array("opcja 031","opcja 032","opcja 033","opcja 034"),
new Array("opcja 041","opcja 042","opcja 043","opcja 044")
),
new Array( //trzeci select
new Array(
new Array("opcja 0111","opcja 0112","opcja 0113","opcja 0114"),
new Array("opcja 0121","opcja 0122","opcja 0123","opcja 0124"),
new Array("opcja 0131","opcja 0132","opcja 0133","opcja 0134"),
new Array("opcja 0141","opcja 0142","opcja 0143","opcja 0144")
),
new Array(
new Array("opcja 0211","opcja 0212","opcja 0213","opcja 0214"),
new Array("opcja 0221","opcja 0222","opcja 0223","opcja 0224"),
new Array("opcja 0231","opcja 0232","opcja 0233","opcja 0234"),
new Array("opcja 0241","opcja 0242","opcja 0243","opcja 0244")
),
new Array(
new Array("opcja 0311","opcja 0312","opcja 0313","opcja 0314"),
new Array("opcja 0321","opcja 0322","opcja 0323","opcja 0324"),
new Array("opcja 0331","opcja 0332","opcja 0333","opcja 0334"),
new Array("opcja 0341","opcja 0342","opcja 0343","opcja 0344")
),
new Array(
new Array("opcja 0411","opcja 0412","opcja 0413","opcja 0414"),
new Array("opcja 0421","opcja 0422","opcja 0423","opcja 0424"),
new Array("opcja 0431","opcja 0432","opcja 0433","opcja 0434"),
new Array("opcja 0441","opcja 0442","opcja 0443","opcja 0444")
)
)
);
var sel = $(sid[level]);
while(sel.firstChild) {
sel.removeChild(sel.firstChild);
}
if(sid[level] == "second") {
$("second").onclick=function() {
show(this,1);
}
}
addoptions(
sel,
(level==0) ? tree[level][elem.selectedIndex] :
tree[level][$("first").selectedIndex][elem.selectedIndex]
);
}
</script>
<select id="first" onclick="show(this,0)">