una tabla sublime menus lista hacer ejemplos desplegables desplegable como javascript jquery html arrays select

tabla - lista desplegable javascript



Dos valores desplegables de una matriz utilizando JavaScript (6)

Aquí está el método sin clon ( jsFiddle ):

var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; select.add(new Option(opt,opt)); select2.add(new Option(opt,opt)); }

Lea más sobre la función de add para JavaScript, seleccione here .

Pregunta simple: quiero unir los valores de la matriz en dos listas desplegables en HTML usando JavaScript. Pero solo un desplegable está funcionando. Si comento una, la otra funciona. Quiero llenar los valores en ambas listas desplegables. ¿Qué hay de malo en este simple código?

var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); select2.appendChild(el); }

<select id="selectNumber"> <option>Choose a number</option> </select> <select id="selectNumber2"> <option>Choose a number</option> </select>


Cree un elemento de opción para cada selección, appendChild no clona el elemento, por lo que el segundo anexo toma el elemento de la primera

var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; var el1 = document.createElement("option"); el1.textContent = opt; el1.value = opt; select.appendChild(el1); select2.appendChild(el); }

<select id="selectNumber"> <option>Choose a number</option> </select> <select id="selectNumber2"> <option>Choose a number</option> </select>


El problema es que el elemento que está creando solo se puede agregar en un padre. No ambos. A continuación el fragmento de código que funciona

var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); var copy = el.cloneNode(true); select2.appendChild(copy); }

Solo note la línea var copy = el.cloneNode(true); esto crea un nuevo clon del elemento, y luego lo agrega a otra select .


No utilice el mismo elemento para ambos controles. Clónelo primero

var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); select2.appendChild(el.cloneNode(true)); }

<select id="selectNumber"> <option>Choose a number</option> </select> <select id="selectNumber2"> <option>Choose a number</option> </select>


Puedes usar tanto JavaScript como jQuery:

var options = ["1", "2", "3", "4", "5"]; $.each(options, function(key, value) { $(''#selectNumber,#selectNumber2'').append($("<option/>", { value: key, text: value })); });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="selectNumber"> <option>Choose a number1</option> </select> <select id="selectNumber2"> <option>Choose a number2</option> </select>

Este es el código JavaScript:

<script> var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); select2.appendChild(el.cloneNode(true)); } }); </script>

Esta es otra opción si quieres separar el código de opción

<script> var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for (var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); var e2 = document.createElement("option"); e2.textContent = opt; e2.value = opt; select2.appendChild(e2); } </script>


var select = document.getElementById("selectNumber"); var select2 = document.getElementById("selectNumber2"); var options = ["1", "2", "3", "4", "5"]; for(var i = 0; i < options.length; i++) { var opt = options[i]; var el = document.createElement("option"); el.textContent = opt; el.value = opt; select.appendChild(el); var el2 = document.createElement("option"); el2.textContent = opt; el2.value = opt; select2.appendChild(el2); }

<select id="selectNumber"> <option>Choose a number</option> </select> <select id="selectNumber2"> <option>Choose a number</option> </select>

Crea dos nodos diferentes y agrégalos.

La razón por la cual su código no funcionó está here

Espero que esto ayude :)