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?

breq
sumber

Jawaban:

208

Perubahan

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

untuk

document.getElementById('personlist').value=Person_ID;
breq
sumber
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;
}
Neeraj Singh
sumber
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;
    }
  }
}
Nick
sumber
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>

Kasino
sumber
20
mySelect.value = myValue;

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

Ronnie Royston
sumber
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");
}
sunil yaduvanshi
sumber
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);
}
Frank M
sumber
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.

Rachana
sumber
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>
Tariqul Islam
sumber