var comboCont = document.getElementById("continente"), comboPais = document.getElementById("pais"), comboCiud = document.getElementById("ciudad"), continentes = { America: { USA: ["San Francisco", "Seattle", "San Antonio"], Perú: ["Lima", "Tacna", "Cusco"], México: ["México D.F.", "Tijuana", "Guadalajara"] }, Europa: { España: ["Barcelona", "Valencia", "Madrid"], Italia: ["Roma", "Venecia", "Milano"] } }, cambiaCiudad = function(contVal, paisVal){ var pais = continentes[contVal][paisVal]; comboCiud.innerHTML = null; for (var j in pais){ var opt = document.createElement("option"); opt.value = pais[j]; opt.innerHTML = pais[j]; comboCiud.appendChild(opt); } }, cambiaPais = function(contVal){ var cont = continentes[contVal]; comboPais.innerHTML = null; for (var i in cont){ var opt = document.createElement("option"); opt.value = i; opt.innerHTML = i; comboPais.appendChild(opt); } cambiaCiudad(contVal, comboPais.value); }; comboCont.addEventListener("change", function(){ cambiaPais(this.value); }, false); comboPais.addEventListener("change", function(){ cambiaCiudad(comboCont.value, this.value); }, false); cambiaPais(comboCont.value);
<section> Continente: <select id = "continente"> <option value = "America">América</option> <option value = "Europa">Europa</option> </select> </section> <section> País: <select id = "pais"></select> </section> <section> Ciudad: <select id = "ciudad"></select> </section>