从下拉列表中按文本值选择选项元素

时间:2011-04-12 16:24:24

标签: javascript drop-down-menu

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

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

我知道我可以用

选择第一个选项
document.getElementById("mydropdown").value='foo'

然而,假设我有一个值为“垃圾邮件”的变量;我可以按文本而不是按值来选择下拉项吗?

4 个答案:

答案 0 :(得分:29)

var 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;
  }
}

答案 1 :(得分:1)

我会使用selectedIndex或循环来选择文本选项,下面的代码不起作用。

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

答案 2 :(得分:0)

如果您想通过其innertext获取选项而不是通过值获取选项,则可以执行以下操作:

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;
        }
    }
}

答案 3 :(得分:0)

较早的IE不会处理select作为子节点的选项,但所有浏览器都会实现select选项集的 text 属性。

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;
}