¿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?

Respuestas:


209

Cambio

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

a

document.getElementById('personlist').value=Person_ID;

¿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;
}

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;
    }
  }
}

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>


21
mySelect.value = myValue;

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


¿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");
}

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);
}

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.


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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.