在<select>元素中检索所选<option>的文本

Cou*_*ero 153 html javascript dom

在下面的:

<select id="test">
    <option value="1">Test One</option>
    <option value="2">Test Two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如何使用JavaScript获取所选选项的文本(即"Test One"或"Test Two")

document.getElementsById('test').selectedValue 返回1或2,什么属性返回所选选项的文本?

Sea*_*ght 256

function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

var text = getSelectedText('test');
Run Code Online (Sandbox Code Playgroud)

  • 这个答案已经过时了,请参阅@ davidjb的答案,以获得一个不错的HTML5单线程. (3认同)
  • @Christallkeks - 单行[如果未选择任何内容则抛出异常](https://jsfiddle.net/mcu4ke23/)。更少的行并不总是更好。 (3认同)

art*_*gor 87

如果您使用jQuery,那么您可以编写以下代码:

$("#selectId option:selected").html();
Run Code Online (Sandbox Code Playgroud)

  • 既然他想要文本,可能最好使用`.text()` (29认同)
  • 不要与`$("#selectId option [selected]")`混淆,它将选择具有"selected"属性但当前可能未被选中的选项. (5认同)

wor*_*hit 54

document.getElementById('test').options[document.getElementById('test').selectedIndex].text;
Run Code Online (Sandbox Code Playgroud)


dav*_*djb 27

在HTML5下,您可以这样做:

document.getElementById('test').selectedOptions[0].text
Run Code Online (Sandbox Code Playgroud)

MDN的文档位于https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedOptions表示完全跨浏览器支持(截至2017年12月),包括Chrome,Firefox,Edge和移动浏览器,但不包括Internet Explorer.


小智 27

selectElement.options[selectElement.selectedIndex].text;
Run Code Online (Sandbox Code Playgroud)

参考文献:


Gre*_*reg 7

options物业包含所有<options>- 从那里你可以看到.text

document.getElementById('test').options[0].text == 'Text One'
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用selectedIndex来检索当前选定的option

el = document.getElementById('elemId')
selectedText = el.options[el.selectedIndex].text
Run Code Online (Sandbox Code Playgroud)