PREGUNTA DE REFRASE:

Tengo 6 selecciones. Cuando selecciono el valor de select1 invoco alguna función del lado del servidor y obtengo la matriz JSON de esa función.

Como máximo obtengo 5 valores de esta matriz, a veces obtengo 20,30,40,50,60 pero a veces 20,30 o solo 20.

Estos valores corresponden al índice de valor de opción select2, select3, select4, select5, select6. Entonces, en caso de que la matriz devuelva 20,30,40,50,60 -> el valor del índice de la opción select2 debe establecerse en 20, select3 a 30, etc. Y si la matriz devuelve solo 20, entonces el valor del índice select2 debe establecerse en 20 y todos los demás indexar valores a 0.

¿Cuál es la mejor manera de hacer esto?

Gracias

2
Gandalf StormCrow 22 dic. 2009 a las 19:33

3 respuestas

La mejor respuesta
var s1 = document.getElementById("select1");
var s2 = document.getElementById("select2");
s2.selectedIndex = s1.selectedIndex;

O, si desea que suceda cuando se cambie el primer <select>:

s1.onchange = function() {
    s2.selectedIndex = s1.selectedIndex;
};
2
James 22 dic. 2009 a las 16:44

Para obtener un valor, o el índice del valor seleccionado, estos funcionan:

document.getElementById("select1").value;
document.getElementByID("select2").selectedIndex;

Para establecer un valor, use el mismo, pero asigne:

document.getElementById("select1").value = "whatever";
document.getElementById("select2").selectedIndex = 3;

Debido a que los valores de su lista son diferentes, supongo que desea usar el índice; es decir, seleccionar "uno" en la selección 1 provocaría que select2 cambie a "siete", etc.

Podrías hacer eso usando:

document.getElementById("select2").selectedIndex
  = document.getElementById("select1").selectedIndex;

Si desea que una lista cambie cuando la otra cambia, manteniéndolas efectivamente sincronizadas, puede vincular funciones al "onchange" de la selección:

<script type="text/javascript>
function select1_onchange() {
  document.getElementById("select2").selectedIndex
    = document.getElementById(select1").selectedIndex;
}

function select2_onchange() {
  document.getElementById("select1").selectedIndex
    = document.getElementById(select2").selectedIndex;
}

</script>

<select name="select1" id="select1" onchange="select1_onchange">
...


<select name="select2" id="select2" onchange="select2_onchange">
...
0
user229044 22 dic. 2009 a las 16:44
//get
var sel1Index = document.getElementById("select1").selectedIndex;
//just in case you want the selected text too
var sel1Text = document.getElementById("select1").options[selectedIndex].text; 

//set
document.getElementById("select2").selectedIndex = sel1Index;
0
rlb.usa 22 dic. 2009 a las 16:43