Este es el codigo que me da dolor de cabeza:
Código HTML:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- Como veras algunos valores dentro del arreglo C1 pareceran desordenados sin sentido alguno, pero la forma de la pagina requiere precentarlos asi; Pense en arreglos anidados como: a[1][2] = new slctr... ó eliminando campos vacios con: delete [2]; pero en verdad que no se bien como seria la sintaxis, se que debe de ser algo simple, incluso usando un if para eliminar los campos dentro del arreglo, pero no soy muy bueno con javascript como para aplicar esas funciones. Una ayuda que no modifique mucho la estructura de el codigo? --> <script> function slctr(texto,valor){ this.texto = texto this.valor = valor } var a=new Array() a[0] = new slctr('- - - Seleccione una opcion - - -') a[1] = new slctr("Primera Opcion de A",'a1') var b=new Array() b[0] = new slctr('- - - Seleccione una opcion - - -') b[1] = new slctr("Primera Opcion de B",'b1') var c=new Array() c[0] = new slctr('- - - Seleccione una opcion - - -') c[1] = new slctr("Primera Opcion de C",'c1') //- var a1 = new Array() a1[0] = new slctr('- - Seleccione ultima opcion - -') a1[1] = new slctr("Opcion a1 = a1 (1)" ,null) a1[2] = new slctr("Opcion a1 = a1 (2)" ,null) var b1 = new Array(0,1,2) b1[0] = new slctr('- - Seleccione ultima opcion - -') b1[3] = new slctr("Opcion b1 = b1 (1)" ,null) b1[4] = new slctr("Opcion b1 = b1 (2)" ,null) var c1 = new Array(0,1,2,3) c1[0] = new slctr('- - Seleccione ultima opcion - -') c1[5] = new slctr("Opcion c1 = c1 (3)",null) c1[4] = new slctr("Opcion c1 = b1 (2)" ,null) c1[1] = new slctr("Opcion c1 = a1 (1)" ,null) //- function slctryole(cual,donde){ if(cual.selectedIndex != 0){ donde.length=0 cual = eval(cual.value) for(m=0;m<cual.length;m++){ var nuevaOpcion = new Option(cual[m].texto); donde.options[m] = nuevaOpcion; if(cual[m].valor != null){ donde.options[m].value = cual[m].valor } else{ donde.options[m].value = cual[m].texto } } } } //-------------------------- // Funcion ocultar y mostrar div if (window.addEventListener) window.addEventListener("load", expande, false) else if (window.attachEvent) window.attachEvent("onload", expande) function contractall(){ if (document.getElementById){ var inc=0 while (document.getElementById("opcion"+inc)){ document.getElementById("opcion"+inc).style.display="none" inc++ } } } //- function expande(){ if (document.getElementById){ var selectedItem=document.areabox.select3.selectedIndex contractall() document.getElementById("opcion"+selectedItem).style.display="block" } } </script> <title>Demo de la pagina</title> </head> <body> <form name="areabox"> <select name="select" onchange="contractall();slctryole(this,this.form.select2)"> <option>- - - Seleccione su primera opcion - - -</option> <option value="a">Opcion A</option> <option value="b">Opcion B</option> <option value="c">Opcion C</option> </select> <select name="select2" onchange="contractall();slctryole(this,this.form.select3)"> <option>- - - - - -</option> </select> <select name="select3" onchange="expande()"> <option>- - - - - -</option> </select> </form> <div id="opcion0" class="divcontenedor"> </div> <div id="opcion1" class="divcontenedor"> <h1>Opcion A1 (1)</h1> <p>En la practica este div se comparte con C1, en la lista sera "funcional", pero te encontraras con un vacio.</p> </div> <div id="opcion2" class="divcontenedor"> <h1>Opcion A1 (2)</h1> <p>¿Hasta aqui va chulo verdad?</p> </div> <div id="opcion3" class="divcontenedor"> <h1>Opcion B1 (1)</h1> <p>Habras notado un hueco en la lista.</p> </div> <div id="opcion4" class="divcontenedor"> <h1>Opcion B1 (2)</h1> <p>En la practica funciones de este div se comparten con la opcion C1</p> </div> <div id="opcion5" class="divcontenedor"> <h1>Opcion C1 (3)</h1> </div> </body> </html>
Ya intente algunas soluciones (como lo puse en el comentario del codigo) pero como soy novato con JS no logre mi cometido, alguien me pudiera dar una mano con esto? necesito echar a andar ya estas listas sin que se vean esos espacios vacios.