JavaScriptを使用して、選択したHTMLオプションを変更するにはどうすればよいですか?


168

私はこのようなオプションメニューを持っています:

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

次に、hrefを使用して、選択したオプションを変更します。例えば:

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

しかし、私はでvalue=11 (Person1)はなくでオプションを選択したいと思いますPerson12

このコードを変更するにはどうすればよいですか?

回答:


208

変化する

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

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

これは複数の値でどのように機能しますか?たとえばdocument.getElementById('personlist').value=id1,id2、動作しません、それをどのように管理しますか?
utdev 2017年

1
ここで@utdevは、stackoverflow.com / a / 1296068/1251563を複数選択するためのソリューションのヒントです。ループを使用する必要があります
breq

だから私はまたはのようなことをすることはできません.value = id1, id2.value = [array]
utdev

@utdev残念ながらありません...ループを使用する必要があります
breq

また、のようにクラスを設定しなくても、選択オプションを通じて値を取得できますvar id = document.getElementById('personlist').value。私は別の答えで使用しました、とにかくありがとう!
アルパー、

44

Selectboxを処理するための純粋なJavaScriptコードとしてのツール:

グラフィカルな理解:

画像-A

ここに画像の説明を入力してください


画像-B

ここに画像の説明を入力してください


画像-C

ここに画像の説明を入力してください

更新-2019年6月25日| バイオリン弾きデモ

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
純粋なjavascriptを使用してselectと対話する方法の素晴らしい例!
GT氏2014年

"Fiddler Demo"へのリンクは、404 /ページが見つかりません:-(
Genki

問題は、「JavaScriptを使用して、選択したHTMLオプションを変更するにはどうすればよいですか?」です。何も答えずにコードをコピーして貼り付けます。
トーマス

28

ブログ投稿JavaScript初心者–ドロップダウンオプションを値で選択すると役立つ場合があると思います。

<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
おそらくべきbreakあなたが選択した値を発見したら、あなたの蚊帳の外。リストが長く、目標値が最初の値の場合、時間を節約できます。
daiscog 2013

21

次のように、select.options.selectedIndex DOM属性を変更することもできます。

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>


20
mySelect.value = myValue;

mySelect選択ボックスはどこにあり、これmyValueは変更後の値です。


なぜ誰もがこれに投票しなかったのですか、これは新機能ですか?私は最近のブラウザをサポートする必要があるだけなので、とにかくこれに進みます。
アントント'14年

2

あなたもjQueryを使うことができます

$(document).ready(function () {
  $('#personlist').val("10");
}

1
または、クエリなしで、不必要なオーバーヘッドの全体を節約できますdocument.querySelector('#personlist').value=10;
Manngo

2

javascriptでオプションを追加する場合

function AddNewOption(userRoutes, text, id) 
{
    var option = document.createElement("option");
    option.text = text;
    option.value = id;
    option.selected = "selected";
    userdRoutes.add(option);
}

「JavaScriptを使用して、選択したHTMLオプションを変更するにはどうすればよいですか?」
Manngo

1

配列Indexは0から始まります。value= 11(Person1)が必要な場合は、positionで取得しますgetElementsByTagName('option')[10].selected


0

古い投稿ですが、このような問題の解決策をまだ探している人がいるなら、私が思いついたのは次のとおりです。

<script>
  document.addEventListener("DOMContentLoaded", function(e) {
    document.forms['AddAndEdit'].elements['list'].value = 11;
  });
</script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.