Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/01/2016, 11:41
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 4 meses
Puntos: 977
Respuesta: Llenar select con Array

Bienvenido a Foros del Web.

Como supongo que cuando se elija una segunda opción querrás que la que previamente fue retirada del otro combo retorno al mismo, tendrías que ejecutar un ciclo en el cual recorrerías el array y solo tomarías a los valores que sean distintos al seleccionado en el combo en el cual se produjo el cambio de opción. Y como sería lo mismo para el otro combo, lo conveniente es utilizar una función.

Un ejemplo:
Código HTML:
Ver original
  1. <select id="a"></select>
  2. <select id="b"></select>

Código Javascript:
Ver original
  1. var o = ["foo", "bar", "bin", "baz"], a, b, op, po, fn = function(s, v){
  2.     s.innerHTML = "";
  3.     for (var i in o){
  4.         if (o[i] != v){
  5.             op = document.createElement("option");
  6.             op.value = o[i];
  7.             op.text = o[i];
  8.             s.add(op);
  9.         }
  10.     }
  11. };
  12.  
  13. //Al terminar de cargar los elementos de la página
  14. document.addEventListener("DOMContentLoaded", function(){
  15.     a = document.querySelector("#a");
  16.     b = document.querySelector("#b");
  17.  
  18.     //Llenamos ambos combos
  19.     for (var i in o){
  20.         op = document.createElement("option");
  21.         op.value = o[i];
  22.         op.text = o[i];
  23.         po = op.cloneNode(true); //Clonamos a la opción previamente creada
  24.         a.add(op);
  25.         b.add(po);
  26.     }
  27.  
  28.     a.addEventListener("change", function(){
  29.         fn(b, this.value);
  30.     }, false);
  31.     b.addEventListener("change", function(){
  32.         fn(a, this.value);
  33.     }, false);
  34. }, false);

Cuando se elija una opción en cualquiera de ambos combos, se enviará como argumentos de la función al otro combo y el valor del combo actual. En la función, limpias al otro combo, recorres la lista de opciones y en cada iteración verificas que el valor actual en el bucle es diferente al valor seleccionado en el combo actual; de ser así, creas la opción, le asignas el valor y texto y la adhieres al otro combo.

DEMO

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand