ฉันจะเปลี่ยนตัวเลือก HTML ที่ใช้ JavaScript ได้อย่างไร


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

ฉันจะเปลี่ยนรหัสนี้ได้อย่างไร

คำตอบ:


209

เปลี่ยนแปลง

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

ถึง

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

สิ่งนี้ทำงานกับค่าหลายค่าได้อย่างไร ตัวอย่างเช่น: document.getElementById('personlist').value=id1,id2จะไม่ทำงานวิธีการจัดการที่?
utdev

1
@utdev ที่นี่เป็นวิธีการแก้ปัญหาสำหรับการเลือกstackoverflow.com/a/1296068/1251563เคล็ดลับหลายรายการ: คุณจำเป็นต้องใช้ลูป
breq

ดังนั้นผมจึงไม่สามารถทำสิ่งที่ชอบ.value = id1, id2หรือ.value = [array]?
utdev

@utdev น่าเสียดายที่ไม่ ... คุณต้องใช้วนรอบ
2560

var id = document.getElementById('personlist').valueนอกจากนี้คุณสามารถได้รับค่าผ่านตัวเลือกให้เลือกโดยไม่ต้องตั้งระดับเช่น ฉันใช้ในคำตอบที่แตกต่างกันขอบคุณแล้ว!
Alper

44

เครื่องมือเป็นรหัส JavaScript ที่บริสุทธิ์สำหรับการจัดการ Selectbox:

ความเข้าใจแบบกราฟิก:

รูปภาพ - ก

ป้อนคำอธิบายรูปภาพที่นี่


รูปภาพ - ข

ป้อนคำอธิบายรูปภาพที่นี่


รูปภาพ - ก

ป้อนคำอธิบายรูปภาพที่นี่

อัปเดต - 25 มิถุนายน 2562 | Fiddler DEMO

รหัส 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
ตัวอย่างที่ดีเกี่ยวกับวิธีการโต้ตอบกับตัวเลือกด้วยจาวาสคริปต์ที่บริสุทธิ์!
Mr.GT

ลิงก์ไปที่ "Fiddler Demo" ตอนนี้ส่งผลให้ 404 / ไม่พบหน้า :-(
Genki

คำถามคือ "ฉันจะเปลี่ยนตัวเลือก HTML ที่ใช้ JavaScript ได้อย่างไร" คุณเพียงแค่คัดลอก / วางชิ้นส่วนของรหัสโดยไม่ตอบอะไรเลย
โทมัส

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

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>


21
mySelect.value = myValue;

mySelectกล่องการเลือกของคุณอยู่ที่ไหนและmyValueเป็นค่าที่คุณต้องการเปลี่ยนเป็น


ทำไมทุกคนไม่ลงคะแนนนี่เป็นคุณลักษณะใหม่หรือไม่ ฉันต้องการสนับสนุนเบราว์เซอร์ล่าสุด แต่จะไปกับสิ่งนี้
antont

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

ฉันคิดว่าคำถามคือ“ ฉันจะเปลี่ยนตัวเลือก HTML ที่ใช้ JavaScript ได้อย่างไร”
Manngo

1

ดัชนีอาร์เรย์จะเริ่มต้นจาก 0 ถ้าคุณต้องการ value = 11 (PERSON1) 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.