252 votes

Comment modifier une option sélectionnée en HTML à l'aide de JavaScript ?

J'ai un menu d'options comme celui-ci :

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

Et maintenant je veux changer l'option sélectionnée en utilisant un href. Par exemple :

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

Mais je veux sélectionner l'option avec value=11 (Person1) pas Person12 .

Comment puis-je modifier ce code ?

311voto

breq Points 1404

Changement

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

à

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

3 votes

Comment cela fonctionne-t-il avec des valeurs multiples ? Par exemple : document.getElementById('personlist').value=id1,id2 ne fonctionnera pas, comment gérer cela ?

6 votes

@utdev voici une solution pour la sélection multiple stackoverflow.com/a/1296068/1251563 conseil : vous devez utiliser une boucle

0 votes

Donc je ne peux pas faire quelque chose comme .value = id1, id2 o .value = [array] ?

71voto

Neeraj Singh Points 1478

Outils en code JavaScript pur pour la manipulation de la Selectbox :

Compréhension graphique :

Image - A

enter image description here


Image - B

enter image description here


Image - C

enter image description here

Mis à jour - 25-Juin-2019 | Fiddler DEMO

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

2 votes

Excellent exemple de la façon d'interagir avec une sélection avec du javascript pur !

1 votes

Le lien vers "Fiddler Demo" donne maintenant un résultat de 404/Page non trouvée :-(

2 votes

La question est la suivante : "Comment modifier une option sélectionnée en HTML à l'aide de JavaScript ? Vous vous contentez de copier/coller un bout de code sans répondre à rien.

43voto

Ron Royston Points 5179
mySelect.value = myValue;

Donde mySelect est votre boîte de sélection, et myValue est la valeur à laquelle vous voulez le changer.

0 votes

Pourquoi tout le monde n'a pas voté cela, est-ce une nouvelle fonctionnalité ? Je n'ai besoin de prendre en charge que les navigateurs récents, alors je vais quand même le faire.

0 votes

J'ai toujours eu l'impression qu'on ne pouvait pas faire ça, alors je l'ai un peu ignoré. Mais quand j'ai vu cette réponse, je l'ai essayée, et voilà, ça marche comme les entrées. Ce doit être la bonne réponse. +1

32voto

Nick Points 687

Je crois que le billet de blog JavaScript Beginners - Sélectionner une option de liste déroulante par valeur pourrait vous aider.

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

7 votes

Vous devriez probablement break sortir de votre boucle une fois que vous avez trouvé la valeur sélectionnée. Gain de temps si la liste est longue et que la valeur cible est l'une des premières.

29voto

caspinos Points 371

Vous pouvez également modifier l'attribut DOM de select.options.selectedIndex comme suit :

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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X