ทำซ้ำผ่านตัวเลือก <select>


202

ฉันมี<select>องค์ประกอบเป็นHTML องค์ประกอบนี้แสดงรายการแบบหล่นลง ฉันพยายามที่จะเข้าใจวิธีการทำซ้ำผ่านตัวเลือกใน<select>องค์ประกอบผ่าน JQuery

ฉันจะใช้ JQuery เพื่อแสดงค่าและข้อความของแต่ละตัวเลือกใน<select>องค์ประกอบได้อย่างไร ฉันแค่ต้องการแสดงมันในalert()กล่อง

คำตอบ:


346
$("#selectId > option").each(function() {
    alert(this.text + ' ' + this.value);
});

2
มันแปลก, มันควรจะทำงาน แต่ด้วยเหตุผลบางอย่างมันไม่ได้สำหรับฉัน ... :(
SublymeRick

14
ควรเป็น $ (this) .val () แทนที่จะเป็น this.value เหมือน IT ppl กล่าว
Thihara

เฉพาะคำตอบของ IT ppl เท่านั้นที่ได้ผลสำหรับฉัน (และไม่ใช่แค่ "สิ่งนี้")
user984003

1
ควรเป็น $ (this) .val () และ $ (this) .text () สำหรับการรับค่าและข้อความตามลำดับ
Amit Bhagat

5
@AmitKB - เป็นการดีกว่าที่จะใช้วิธี DOM ดั้งเดิมเพื่อแยกข้อความและค่า 1) สั้นกว่า 2) หลีกเลี่ยงการสร้างวัตถุ jQuery ใหม่สองรายการ
karim79

79

สิ่งนี้ใช้ได้สำหรับฉัน

$(function() {
    $("#select option").each(function(i){
        alert($(this).text() + " : " + $(this).val());
    });
});

5
หากคุณเก็บไว้$(this)ในตัวแปรมันจะมีประสิทธิภาพมากขึ้นเช่นvar $this = $(this); $this.text(); $this.val();...etc.
Liam

25

ยังสามารถใช้แปรสภาพแต่ละดัชนีและองค์ประกอบ

$('#selectIntegrationConf').find('option').each(function(index,element){
 console.log(index);
 console.log(element.value);
 console.log(element.text);
 });

// สิ่งนี้จะได้ผลเช่นกัน

$('#selectIntegrationConf option').each(function(index,element){
 console.log(index);
 console.log(element.value);
 console.log(element.text);
 });

17

และสิ่งที่จำเป็นไม่ใช่วิธีการเสาะหาสำหรับผู้ติดตามเนื่องจาก Google ดูเหมือนจะส่งทุกคนที่นี่:

  var select = document.getElementById("select_id");
  for (var i = 0; i < select.length; i++){
    var option = select.options[i];
    // now have option.text, option.value
  }

4

คุณสามารถลองสิ่งนี้ได้เช่นกัน

HTMLรหัสของคุณ

<select id="mySelectionBox">
    <option value="hello">Foo</option>
    <option value="hello1">Foo1</option>
    <option value="hello2">Foo2</option>
    <option value="hello3">Foo3</option>
</select>

คุณJQueryรหัส

$("#mySelectionBox option").each(function() {
    alert(this.text + ' ' + this.value);
});

หรือ

var select =  $('#mySelectionBox')[0];

  for (var i = 0; i < select.length; i++){
    var option = select.options[i];
    alert (option.text + ' ' + option.value);
  }


1

ถ้าคุณไม่ต้องการ Jquery (และสามารถใช้ ES6 ได้)

for (const option of document.getElementById('mySelect')) {
  console.log(option);
}

คำตอบรหัสเท่านั้นที่จะหมดกำลังใจ โปรดเพิ่มคำอธิบายเกี่ยวกับวิธีการแก้ไขปัญหาหรือวิธีการนี้แตกต่างจากคำตอบที่มีอยู่ จากการรีวิว
Nick

1

รูปแบบอื่นของคำตอบที่เสนอไปแล้วโดยไม่มี jQuery

Object.values(document.getElementById('mySelect').options).forEach(option => alert(option))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.