<select> 요소에서 선택한 <option>의 텍스트 검색


158

다음에서 :

<select id="test">
    <option value="1">Test One</option>
    <option value="2">Test Two</option>
</select>

JavaScript를 사용하여 선택한 옵션 (예 : "Test One"또는 "Test Two")의 텍스트를 얻으려면 어떻게해야합니까?

document.getElementsById('test').selectedValue 1 또는 2를 반환합니다. 선택한 옵션의 텍스트를 반환하는 속성은 무엇입니까?

답변:


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

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

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

var text = getSelectedText('test');

언제나처럼 화려한 자바 스크립트!
doniyor

3
이 답변은 구식입니다. HTML5 한 줄짜리 멋진 답변은 아래 @davidjb의 답변을 참조하십시오.
Christallkeks

2
@Christallkeks- 아무것도 선택하지 않으면 한 줄에서 예외가 발생합니다 . 적은 줄이 항상 좋은 것은 아닙니다.
Sean Bright

89

jQuery를 사용하는 경우 다음 코드를 작성할 수 있습니다.

$("#selectId option:selected").html();

30
그는 텍스트를 원하기 때문에, 아마도 더 나은 사용.text()
Muhd

5
$("#selectId option[selected]")"selected"속성이 있지만 현재 선택되지 않았을 수있는 옵션을 선택하는 과 혼동하지 마십시오 .
mowwwalker 2014 년

더 복잡해 보인다.!
NDEthos

54
document.getElementById('test').options[document.getElementById('test').selectedIndex].text;

다른 모든 옵션을 시도한 후에도 저에게 효과적이었습니다.
mimi

이 단어는 완벽합니다!
Albert Hidalgo

30

HTML5에서 다음을 수행 할 수 있습니다.

document.getElementById('test').selectedOptions[0].text

https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedOptions에있는 MDN의 문서는 Chrome, Firefox, Edge 및 모바일 브라우저를 포함한 완전한 브라우저 간 지원 (최소 2017 년 12 월 기준)을 나타냅니다. , 그러나 Internet Explorer는 제외됩니다.


+1, 그러는 동안 이것이 갈 길입니다. Firefox 티켓이 수정되었으며 MS Edge를 열어서 지원하는지 확인하기까지했습니다.
Christallkeks


7

options속성에는 모든 것이 포함되어 <options>있습니다..text

document.getElementById('test').options[0].text == 'Text One'

6

를 사용 selectedIndex하여 현재 선택한 항목을 검색 할 수 있습니다 option.

el = document.getElementById('elemId')
selectedText = el.options[el.selectedIndex].text


2

이 스레드를 발견하고 이벤트를 통해 선택한 옵션 텍스트를 얻는 방법을 알고 싶다면 여기 샘플 코드가 있습니다.

alert(event.target.options[event.target.selectedIndex].text);

2

선택 목록 개체를 사용하여 자체적으로 선택한 옵션 색인을 식별합니다. 거기에서-해당 색인의 내부 HTML을 가져옵니다. 이제 해당 옵션의 텍스트 문자열이 있습니다.

<select onchange="alert(this.options[this.selectedIndex].innerHTML);">
       <option value="">Select Actions</option>
       <option value="1">Print PDF</option>
       <option value="2">Send Message</option>
       <option value="3">Request Review</option>
       <option value="4">Other Possible Actions</option>
    </select>


.innerHTML모든 아이들과 그 속성을 얻습니다. 요소에 자식이 없을 때 작동하지만 자식이있는 요소가 있으면 의도 한 것보다 더 많이 반환합니다.
hipkiss

1
<option> Children? </ option> 태그 사이에 몇 개의 "children"이있을 것으로 예상하십니까?
Creeperstanson 2016 년

0

jQuery없이 일반 자바 스크립트를 사용하는 @artur와 유사합니다.

// @ Sean-bright의 "elt"변수 사용

var selection=elt.options[elt.selectedIndex].innerHTML;

0

쉽고 간단한 방법 :

const select = document.getElementById('selectID');
const selectedOption = [...select.options].find(option => option.selected).text;

1
이 코드 스 니펫은 문제를 해결할 수 있지만 질문에 대한 이유 또는 답을 설명하지 않습니다. 게시물의 품질을 높이는 데 도움이되므로 코드에 대한 설명을 포함 해주세요 . 미래에 독자를 위해 질문에 답하고 있으며 해당 사용자는 코드 제안 이유를 모를 수 있습니다.
Luca Kiebel

이게 얼마나 쉽거나 간단한 지 모르겠습니다. find()선택한 항목의 색인을 이미 알고 있는데 왜 사용 합니까? 또한 선택한 항목 ( <select multiple>) 이없는 경우 오류가 발생합니다.
Sean Bright
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.