Prueba esto, lo he ordenado de tal forma que puedas poner al principio los valores que traes desde PHP o desde ASP o desde lo que estes usando del lado del servidor para leer la base de datos.
Código PHP:
<html>
<head>
<script language="JavaScript">
/* Aqui deben estar las opciones del combo principal */
var aPaises = new Array(
" ",
"Mexico",
"España",
"Venezuela"
);
var aEstados0 = new Array(
" "
);
/* A partir de aqui deben estar las opciones del combo */
/* secundario (un array por cada valor del principal) */
var aEstados1 = new Array(
" ",
"Ciudad de México",
"Monterrey",
"Guadalajara"
);
var aEstados2 = new Array(
" ",
"Madrid",
"Barcelona",
"San Sebastián"
);
var aEstados3 = new Array(
" ",
"Caracas",
"Coro",
"Maracay",
"Valencia"
);
var aEstados = new Array(
aEstados0,
aEstados1,
aEstados2,
aEstados3
);
function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}
function cambia(oMster, oCntrl){
var nSelected = oMster.selectedIndex;
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aEstados[nSelected].length; i++)
addOpt(oCntrl, i, aEstados[nSelected][i], String(i));
}
function llena(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aPaises.length; i++)
addOpt(oCntrl, i, aPaises[i], String(i));
}
</script>
</head>
<body>
<form name="frm">
Pais
<select name="pais" onchange="cambia(this, document.frm.ciudad)">
<option value=" "> </option>
</select>
Ciudad
<select name="ciudad">
<option value=" "> </option>
</select>
</form>
<script language="JavaScript">
llena(document.frm.pais);
</script>
</body>
</html>
Saludos.