Как получить текст выбранного пункта в избранном управлении?

 <select name="DropList" id="serverDropList"> 
  <option selected="selected" value="2">server1:3000</option> 
  <option value="5">server3:3000</option> 
 </select> 

я знаю в прототипе, которым я могу получить значение $('serverDropList').value но как я могу получить "server1:3000"?

10
задан Rob W 27 December 2011 в 17:25
поделиться

1 ответ

Я не думаю, что у Prototype есть какой-либо ярлык, который сделает это за вас, поэтому:

var box = $('serverDropList');
var text = box.selectedIndex >= 0 ? box.options[box.selectedIndex].innerHTML : undefined;

... дает вам innerHTML выбранной опции или undefined , если здесь ничего нет.

Если хотите, вы можете использовать Элемент # addMethods , чтобы определить это один раз и сделать его доступным для всех ваших окон выбора:

Element.addMethods("SELECT", (function() {
    function getSelectedOptionHTML(element) {
        if (!(element = $(element))) return;
        var index = element.selectedIndex;
        return index >= 0 ? element.options[index].innerHTML : undefined;
    }

    return {
        getSelectedOptionHTML: getSelectedOptionHTML
    };
})());

Использование:

var text = $('serverDropList').getSelectedOptionHTML();

Я использовал именованную функцию при определении этого . Если вас не беспокоят именованные функции (я всегда использую их ), вы можете сделать это немного проще:

Element.addMethods("SELECT", {
    getSelectedOptionHTML: function(element) {
        if (!(element = $(element))) return;
        var index = element.selectedIndex;
        return index >= 0 ? element.options[index].innerHTML : undefined;
    }
);
19
ответ дан 3 December 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: