<select name="DropList" id="serverDropList">
<option selected="selected" value="2">server1:3000</option>
<option value="5">server3:3000</option>
</select>
я знаю в прототипе, которым я могу получить значение $('serverDropList').value
но как я могу получить "server1:3000"?
Я не думаю, что у 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;
}
);