Làm cách nào để thay đổi tùy chọn HTML đã chọn bằng JavaScript?


168

Tôi có menu tùy chọn như thế này:

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

Và bây giờ tôi muốn thay đổi tùy chọn đã chọn bằng cách sử dụng an href. Ví dụ:

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

Nhưng tôi muốn chọn tùy chọn với value=11 (Person1), không Person12.

Làm cách nào để thay đổi mã này?

Câu trả lời:


208

Thay đổi

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

đến

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

Làm thế nào để điều này làm việc với nhiều giá trị? Ví dụ: document.getElementById('personlist').value=id1,id2sẽ không hoạt động, làm thế nào để quản lý điều đó?
utdev 17/03/2017

1
@utdev đây là một giải pháp cho nhiều lựa chọn stackoverflow.com/a/1296068/1251563 mẹo: bạn cần sử dụng một vòng lặp
breq

Vì vậy, tôi không thể làm một cái gì đó như .value = id1, id2hay .value = [array]?
utdev 17/03/2017

@utdev rất tiếc là không ... Bạn cần sử dụng một vòng lặp
breq

Ngoài ra, bạn có thể nhận được giá trị thông qua các tùy chọn chọn mà không cần thiết lập lớp như thế nào var id = document.getElementById('personlist').value. Tôi đã sử dụng trong câu trả lời khác nhau, cảm ơn nào!
Alper

44

Các công cụ dưới dạng mã JavaScript thuần để xử lý Hộp chọn:

Hiểu đồ họa:

Hình ảnh - A

nhập mô tả hình ảnh ở đây


Hình ảnh - B

nhập mô tả hình ảnh ở đây


Hình ảnh - C

nhập mô tả hình ảnh ở đây

Cập nhật - 25 tháng 6 năm 2019 | Fiddler DEMO

Mã 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
Ví dụ tuyệt vời về cách tương tác với một lựa chọn với javascript thuần túy!
ÔngGT

Liên kết đến "Fiddler Demo" hiện có kết quả là 404 / Không tìm thấy trang :-(
Genki

Câu hỏi là "Làm cách nào để thay đổi tùy chọn HTML được chọn bằng JavaScript?". Bạn chỉ cần sao chép / dán một đoạn mã mà không trả lời gì cả.
Thomas

28

Tôi tin rằng bài đăng trên blog Người mới bắt đầu JavaScript - Chọn tùy chọn thả xuống theo giá trị có thể giúp bạn.

<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
Bạn có thể nên breakra khỏi vòng lặp của mình một khi bạn đã tìm thấy giá trị được chọn. Tiết kiệm thời gian nếu danh sách dài và giá trị mục tiêu là một trong những đầu tiên.
daiscog

21

Bạn cũng có thể thay đổi thuộc tính select.options.selectedIndex DOM như thế này:

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;

mySelectHộp lựa chọn của bạn ở đâu và myValuelà giá trị bạn muốn thay đổi.


Tại sao mọi người không bỏ phiếu này, đây có phải là một tính năng mới không? Tôi chỉ cần hỗ trợ các trình duyệt gần đây mặc dù vậy dù sao đi nữa với điều này.
antont

2

Bạn cũng có thể sử dụng JQuery

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

1
Hoặc, không có truy vấn, tiết kiệm cả đống chi phí không cần thiết , document.querySelector('#personlist').value=10;.
Manngo

2

Nếu bạn đang thêm tùy chọn với javascript

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

Tôi nghĩ rằng câu hỏi là về Làm thế nào để tôi thay đổi một tùy chọn được chọn bằng cách sử dụng JavaScript?
Manngo

1

Một mảng Index sẽ bắt đầu từ 0. Nếu bạn muốn value = 11 (Person1), bạn sẽ có được nó với vị trí getElementsByTagName('option')[10].selected.


0

Đây là một bài viết cũ, nhưng nếu bất cứ ai vẫn đang tìm kiếm giải pháp cho loại vấn đề này, đây là những gì tôi nghĩ ra:

<script>
  document.addEventListener("DOMContentLoaded", function(e) {
    document.forms['AddAndEdit'].elements['list'].value = 11;
  });
</script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.