Bagaimana cara mengubah opsi HTML yang dipilih menggunakan JavaScript?


168

Saya memiliki menu opsi seperti ini:

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

Dan sekarang saya ingin mengubah opsi yang dipilih dengan menggunakan href. Sebagai contoh:

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

Tapi saya ingin memilih opsi dengan value=11 (Person1), tidak Person12.

Bagaimana cara saya mengubah kode ini?

Jawaban:


208

Perubahan

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

untuk

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

bagaimana cara kerjanya dengan beberapa nilai? Misalnya: document.getElementById('personlist').value=id1,id2tidak akan berfungsi, bagaimana cara mengelolanya?
utdev

1
@utdev di sini adalah solusi untuk memilih beberapa tip stackoverflow.com/a/1296068/1251563 : Anda perlu menggunakan perulangan
breq

Jadi saya tidak bisa melakukan sesuatu seperti .value = id1, id2atau .value = [array]?
utdev

@utdev sayangnya tidak ... Anda perlu menggunakan loop
breq

Anda juga bisa mendapatkan nilai melalui opsi pilih tanpa mengatur kelas suka var id = document.getElementById('personlist').value. Saya menggunakan jawaban yang berbeda, terima kasih!
Alper

44

Alat sebagai kode JavaScript murni untuk menangani Selectbox:

Pemahaman Grafis:

Gambar - A

masukkan deskripsi gambar di sini


Gambar - B

masukkan deskripsi gambar di sini


Gambar - C

masukkan deskripsi gambar di sini

Diperbarui - 25-Juni-2019 | Fiddler DEMO

Kode 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
Contoh yang bagus tentang bagaimana berinteraksi dengan orang terpilih dengan javascript murni!
Mr.GT

Tautan ke "Demo Fiddler" sekarang menghasilkan 404 / Halaman Tidak Ditemukan :-(
Genki

Pertanyaannya adalah "Bagaimana cara mengubah opsi yang dipilih HTML menggunakan JavaScript?". Anda cukup menyalin / menempelkan sepotong kode tanpa menjawab apa pun.
Thomas

28

Saya percaya bahwa posting blog JavaScript Beginners - Pilih opsi dropdown menurut nilai dapat membantu Anda.

<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
Anda mungkin harus breakkeluar dari loop setelah Anda menemukan nilai yang dipilih. Menghemat waktu jika daftar panjang dan nilai target adalah yang pertama.
daiscog

21

Anda juga dapat mengubah atribut DOM select.options.selectedIndex seperti ini:

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;

Di mana mySelectkotak pilihan Anda, dan myValuemerupakan nilai yang ingin Anda ubah.


Mengapa tidak semua orang memilih ini, apakah ini fitur baru? Saya hanya perlu mendukung peramban terbaru meskipun demikian dengan ini bagaimanapun.
antont

2

Anda dapat menggunakan JQuery juga

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

1
Atau, tanpa kueri, simpan sejumlah besar overhead yang tidak perlu document.querySelector('#personlist').value=10;,.
Manngo

2

Jika Anda menambahkan opsi dengan javascript

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

Saya pikir pertanyaannya adalah "Bagaimana cara mengubah opsi HTML yang dipilih menggunakan JavaScript?"
Manngo

1

Indeks array akan mulai dari 0. Jika Anda ingin nilai = 11 (Person1), Anda akan mendapatkannya dengan posisi getElementsByTagName('option')[10].selected.


0

Ini adalah posting lama, tetapi jika ada yang masih mencari solusi untuk masalah seperti ini, inilah yang saya temukan:

<script>
  document.addEventListener("DOMContentLoaded", function(e) {
    document.forms['AddAndEdit'].elements['list'].value = 11;
  });
</script>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.