Отримання тексту зі спадного вікна


77

Це отримує значення того, що було вибрано в моєму спадному меню.

document.getElementById('newSkill').value

Однак я не можу з’ясувати, за якою властивістю слід звертатися до тексту, який наразі відображається у спадному меню. Я спробував "текст", потім подивився на W3Schools, але на це не було відповіді. Хтось тут знає?

Для тих, хто не впевнений, ось HTML для випадаючого вікна.

<select name="newSkill" id="newSkill">
    <option value="1">A skill</option>
    <option value="2">Another skill</option>
    <option value="3">Yet another skill</option>
</select>

Відповіді:


137

На основі вашого прикладу HTML-коду, ось один із способів отримати відображений текст поточно вибраного варіанту:

var skillsSelect = document.getElementById("newSkill");
var selectedText = skillsSelect.options[skillsSelect.selectedIndex].text;

3
Для тих, хто запізнився на вечірку, було кілька пропозицій, але ніхто не помітив, що вони сказали .value, де їм слід говорити .text, день, який для нас усіх був заплутаним.
Тейфіон

13

Просто ви можете використовувати Jquery замість Javascript

$("#yourdropdownid option:selected").text();

Спробуйте це.


В оригінальному запитанні не згадується JQuery. Ті з нас, хто не використовує JQuery, зазвичай воліють відповіді, а не посилання на нього, якщо запитання не посилається на нього або не позначає його. Це особливо випадок, коли існує відносно стисле рішення, подібне до рішення Патріка МакЕлхейні.
казорт

1
@cazort Навпаки. Мені потрібно було знати, як це зробити за допомогою JQuery, і ця відповідь надала мені те, що мені потрібно було знати, тому було дуже корисно (і добре) Бобіну Джозефу включити це як відповідь.
Broken Man

8

Це повинно повернути текстове значення вибраного значення

var vSkill = document.getElementById('newSkill');

var vSkillText = vSkill.options[vSkill.selectedIndex].innerHTML;

alert(vSkillText);

Реквізит: @Tanerax для читання запитання, знання того, що було задано, та відповіді на нього до того, як інші зрозуміли це.

Редагувати: DownModed, тому що я насправді прочитав питання повністю і відповів на нього, це сумний світ.


7
document.getElementById('newSkill').options[document.getElementById('newSkill').selectedIndex].value 

Має працювати


2
ОП хоче властивість .text, а не .value
ninjaPixel

4

Це працює, я спробував це сам, я думав, що розміщу його тут на випадок, якщо комусь це буде потрібно ...

document.getElementById("newSkill").options[document.getElementById('newSkill').selectedIndex].text;

2

Додає подію зміни до виділення, яке отримує текст для кожного вибраного параметра та записує їх у div.

Ви можете використовувати jQuery дуже особистий, успішний і простий у використанні

<select name="sweets" multiple="multiple">
  <option>Chocolate</option>
  <option>Candy</option>
  <option>Taffy</option>
  <option selected="selected">Caramel</option>
  <option>Fudge</option>
  <option>Cookie</option>
</select>
<div></div>


$("select").change(function () {
  var str = "";

  $("select option:selected").each(function() {
    str += $( this ).text() + " ";
  });

  $( "div" ).text( str );
}).change();

2
function getValue(obj)
{  
   // it will return the selected text
   // obj variable will contain the object of check box
   var text = obj.options[obj.selectedIndex].innerHTML ; 

}

Фрагмент HTML

 <asp:DropDownList ID="ddl" runat="server" CssClass="ComboXXX" 
  onchange="getValue(this)">
</asp:DropDownList>

1

Чи отримує це правильну відповідь?

document.getElementById("newSkill").innerHTML

5
Це поверне вам весь HTML-код для параметрів .. як `<option value =" 1 "> Навик </option> <option value =" 2 "> Інший вміння </option> <option value =" 3 " > Ще одна навичка </option> `
Валентин Деспа

0
    var ele = document.getElementById('newSkill')
    ele.onchange = function(){
            var length = ele.children.length
            for(var i=0; i<length;i++){
                if(ele.children[i].selected){alert(ele.children[i].text)};              
            }
    }   

0
var selectoption = document.getElementById("dropdown");
var optionText = selectoption.options[selectoption.selectedIndex].text;

Як щодо тексту, щоб пояснити, що відбувається?
Steve K

Хоча відповідь лише на код вирішує проблему для операції, вона не рекомендується, оскільки вона не надає ніякої цінності майбутнім відвідувачам. Відповідь, яка лише надає, швидко буде позначена як "дуже низька якість", і в результаті цього вона буде буде швидко видалено. відредагуйте свою відповідь, включивши пояснення того, що робить наданий код.
Ferrybig

Дякую. Сподіваюся, мою відповідь легко зрозуміти іншим.
Дебанджан Рой

коли я намагався записати це var optionText = selectoption.options[selectoption.selectedIndex].text;, повертається лише перший елемент опції. Я хочу, щоб кожен з них відображався з onchangeподії.
Chris22,

0

Будь ласка, спробуйте нижче, це найпростіший спосіб, і він працює чудово

var newSkill_Text = document.getElementById("newSkill")[document.getElementById("newSkill").selectedIndex];

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.