Javascript 通过文本值从下拉列表中选择选项元素

Javascript 通过文本值从下拉列表中选择选项元素,javascript,drop-down-menu,Javascript,Drop Down Menu,给定一个HTML表单元素,如: <select id='mydropdown'> <option value='foo'>Spam</option> <option value='bar'>Eggs</option> </select> 但是,假设我有一个值为“Spam”的变量;我可以按文本而不是按值选择下拉项吗?我可以使用selectedIndex或循环按文本选择选项,下面的代码不起作用 document.get

给定一个HTML表单元素,如:

<select id='mydropdown'>
  <option value='foo'>Spam</option>
  <option value='bar'>Eggs</option>
</select>

但是,假设我有一个值为“Spam”的变量;我可以按文本而不是按值选择下拉项吗?

我可以使用selectedIndex或循环按文本选择选项,下面的代码不起作用

document.getElementById("mydropdown").text = 'Eggs';

如果希望通过其内部文本而不是值获取选项,可以执行以下操作:

function go(){
    var dropdown = document.getElementById('mydropdown');
    var textSelected = 'Spam';

    for(var i=0, max=dropdown.children.length; i<max; i++) {
        if(textSelected == dropdown.children[i].innerHTML){
            alert(textSelected);
            return;
        }
    }
}
函数go(){ var dropdown=document.getElementById('mydropdown'); var textSelected='Spam'; 对于(var i=0,max=dropdown.children.length;i
var desiredValue=“鸡蛋”
var el=document.getElementById(“mydropdown”);

for(var i=0;i旧版IE不会将select的选项作为子节点处理,但所有浏览器都实现select选项集合的文本属性

function selectbytext(sel, txt){
    if(typeof sel== 'string'){
        sel= document.getELementById(sel) || document.getELementsByName(sel)[0];
    }
    var opts= sel.options;
    for(var i= 0, L= opts.length; i<L; i++){
        if(opts[i].text== txt){
            sel.selectedIndex= i;
            break;
        }
    }
    return i;
}
函数selectbytext(sel,txt){
如果(选择的类型=='string'){
sel=document.getELementById(sel)| document.getELementsByName(sel)[0];
}
var opts=选择选项;

对于(var i=0,L=opts.length;iI不需要当前所选值的文本;我想根据文本设置值。通过
el.options
循环,并寻找正确的
。尽管text
属性看起来很有希望。是的,我认为这是您使用children集合与下拉列表的最佳理由。选项d下拉菜单.options[i].text?没有具体的原因,我只是写了它.for(var i=0;ivar desiredValue = "eggs" var el = document.getElementById("mydropdown"); for(var i=0; i<el.options.length; i++) { if ( el.options[i].text == desiredValue ) { el.selectedIndex = i; break; } }
function selectbytext(sel, txt){
    if(typeof sel== 'string'){
        sel= document.getELementById(sel) || document.getELementsByName(sel)[0];
    }
    var opts= sel.options;
    for(var i= 0, L= opts.length; i<L; i++){
        if(opts[i].text== txt){
            sel.selectedIndex= i;
            break;
        }
    }
    return i;
}