<select name="DropList" id="serverDropList"> <option selected="selected" value="2">server1:3000</option> <option value="5">server3:3000</option> </select>
我知道在原型中,我可以通过$(‘serverDropList’)获取值,但是如何获得“server1:3000”?
解决方法
我不认为Prototype有任何快捷方式为你做,所以:
var Box = $('serverDropList'); var text = Box.selectedIndex >= 0 ? Box.options[Box.selectedIndex].innerHTML : undefined;
…给你所选选项的innerHTML,或者如果没有,则为undefined.
如果您愿意,您可以使用Element#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();
定义时,我使用了一个命名函数.如果你没有打扰命名功能(我是always use them),你可以使它更简单一些:
Element.addMethods("SELECT",{ getSelectedOptionHTML: function(element) { if (!(element = $(element))) return; var index = element.selectedIndex; return index >= 0 ? element.options[index].innerHTML : undefined; } );