¿Cómo cambio una opción HTML seleccionada usando JavaScript?

168

Tengo un menú de opciones como este:

<form name="AddAndEdit">
   <select name="list" id="personlist">
      <option value="11">Person1</option>
      <option value="27">Person2</option>
      <option value="17">Person3</option>
      <option value="10">Person4</option>
      <option value="7">Person5</option>
      <option value="32">Person6</option>
      <option value="18">Person7</option>
      <option value="29">Person8</option>
      <option value="28">Person9</option>
      <option value="34">Person10</option>
      <option value="12">Person11</option>
      <option value="19">Person12</option>
   </select>
</form>

Y ahora quiero cambiar la opción seleccionada usando un href. Por ejemplo:

<a href="javascript:void(0);"
  onclick="document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected';">change</a>

Pero quiero seleccionar la opción con value=11 (Person1), no Person12.

¿Cómo cambio este código?

breq
fuente

Respuestas:

209

Cambio

document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected'

a

document.getElementById('personlist').value=Person_ID;
breq
fuente
¿Cómo funciona esto con múltiples valores? Por ejemplo: document.getElementById('personlist').value=id1,id2no funcionará, ¿cómo gestionar eso?
utdev
1
@utdev aquí es una solución para la selección múltiple stackoverflow.com/a/1296068/1251563 consejo: necesita usar un bucle
breq
¿Entonces no puedo hacer algo como .value = id1, id2o .value = [array]?
utdev
@utdev por desgracia no ... Es necesario utilizar un bucle
BREQ
También puede obtener valor a través de opciones de selección sin establecer la clase como var id = document.getElementById('personlist').value. Solía ​​en otra respuesta, gracias de todos modos!
Alper
44

Herramientas como código JavaScript puro para manejar Selectbox:

Comprensión Gráfica:

Imagen - A

ingrese la descripción de la imagen aquí


Imagen - B

ingrese la descripción de la imagen aquí


Imagen - C

ingrese la descripción de la imagen aquí

Actualizado - 25-junio-2019 | Fiddler DEMO

Código JavaScript:

/**
 * Empty Select Box
 * @param eid Element ID
 * @param value text
 * @param text text
 * @author Neeraj.Singh
 */
function emptySelectBoxById(eid, value, text) {
    document.getElementById(eid).innerHTML = "<option value='" + value + "'>" + text + "</option>";
}


/**
 * Reset Select Box
 * @param eid Element ID
 */

function resetSelectBoxById(eid) {
    document.getElementById(eid).options[0].selected = 'selected';
}


/**
 * Set Select Box Selection By Index
 * @param eid Element ID
 * @param eindx Element Index
 */

function setSelectBoxByIndex(eid, eindx) {
    document.getElementById(eid).getElementsByTagName('option')[eindx].selected = 'selected';
    //or
    document.getElementById(eid).options[eindx].selected = 'selected';
}


/**
 * Set Select Box Selection By Value
 * @param eid Element ID
 * @param eval Element Index
 */
function setSelectBoxByValue(eid, eval) {
    document.getElementById(eid).value = eval;
}


/**
 * Set Select Box Selection By Text
 * @param eid Element ID
 * @param eval Element Index
 */
function setSelectBoxByText(eid, etxt) {
    var eid = document.getElementById(eid);
    for (var i = 0; i < eid.options.length; ++i) {
        if (eid.options[i].text === etxt)
            eid.options[i].selected = true;
    }
}


/**
 * Get Select Box Text By ID
 * @param eid Element ID
 * @return string
 */

function getSelectBoxText(eid) {
    return document.getElementById(eid).options[document.getElementById(eid).selectedIndex].text;
}


/**
 * Get Select Box Value By ID
 * @param eid Element ID
 * @return string
 */

function getSelectBoxValue(id) {
    return document.getElementById(id).options[document.getElementById(id).selectedIndex].value;
}
Neeraj Singh
fuente
1
¡Un gran ejemplo sobre cómo interactuar con un select con javascript puro!
Mr.GT
El enlace a "Demo de Fiddler" ahora da como resultado 404 / Página no encontrada :-(
Genki
La pregunta es "¿Cómo cambio una opción HTML seleccionada usando JavaScript?". Simplemente copie / pegue un fragmento de código sin responder nada.
Thomas
28

Creo que la publicación del blog Principiantes de JavaScript: seleccione una opción desplegable por valor podría ayudarlo.

<a href="javascript:void(0);" onclick="selectItemByValue(document.getElementById('personlist'),11)">change</a>

function selectItemByValue(elmnt, value){

  for(var i=0; i < elmnt.options.length; i++)
  {
    if(elmnt.options[i].value === value) {
      elmnt.selectedIndex = i;
      break;
    }
  }
}
Mella
fuente
77
Probablemente debería breaksalir de su ciclo una vez que haya encontrado el valor seleccionado. Ahorra tiempo si la lista es larga y el valor objetivo es uno de los primeros.
daiscog
21

También puede cambiar el atributo DOM select.options.selectedIndex de esta manera:

function selectOption(index){ 
  document.getElementById("select_id").options.selectedIndex = index;
}
<p>
<select id="select_id">
  <option selected>first option</option>
  <option>second option</option>
  <option>third option</option>
</select>
</p>
<p>
  <button onclick="selectOption(0);">Select first option</button>
  <button onclick="selectOption(1);">Select second option</button>
  <button onclick="selectOption(2);">Select third option</button>
</p>

caspinos
fuente
21
mySelect.value = myValue;

¿Dónde mySelectestá su cuadro de selección y myValuees el valor al que desea cambiarlo?

Ronnie Royston
fuente
¿Por qué no todos votaron esto? ¿Es esta una nueva característica? Sin embargo, solo necesito admitir navegadores recientes, así que de todos modos voy con esto.
Antont
2

Puedes usar JQuery también

$(document).ready(function () {
  $('#personlist').val("10");
}
sunil yaduvanshi
fuente
1
O, sin consulta, ahorrando un montón de sobrecarga innecesaria, document.querySelector('#personlist').value=10;.
Manngo
2

Si está agregando la opción con javascript

function AddNewOption(userRoutes, text, id) 
{
    var option = document.createElement("option");
    option.text = text;
    option.value = id;
    option.selected = "selected";
    userdRoutes.add(option);
}
Frank M
fuente
Creo que la pregunta fue "¿Cómo cambio una opción HTML seleccionada usando JavaScript?"
Manngo
1

Un índice de matriz comenzará desde 0. Si desea un valor = 11 (Persona1), lo obtendrá con posición getElementsByTagName('option')[10].selected.

Rachana
fuente
0

Es una publicación antigua, pero si alguien todavía está buscando una solución a este tipo de problema, esto es lo que se me ocurrió:

<script>
  document.addEventListener("DOMContentLoaded", function(e) {
    document.forms['AddAndEdit'].elements['list'].value = 11;
  });
</script>
Tariqul Islam
fuente