说我有一个这样的下拉列表:
<select id="MyDropDown">
<option value="0">Google</option>
<option value="1">Bing</option>
<option value="2">Yahoo</option>
</select>
我希望根据选项文本设置所选值,而不是使用javascript设置值。我该怎么做呢?例如,使用c#我可以执行类似下面示例的操作,并选择“Google”选项。
ListItem mt = MyDropDown.Items.FindByText("Google");
if (mt != null)
{
mt.Selected = true;
}
提前感谢您的帮助!
答案 0 :(得分:82)
var textToFind = 'Google';
var dd = document.getElementById('MyDropDown');
for (var i = 0; i < dd.options.length; i++) {
if (dd.options[i].text === textToFind) {
dd.selectedIndex = i;
break;
}
}
答案 1 :(得分:10)
现代替代方案:
const textToFind = 'Google';
const dd = document.getElementById ('MyDropDown');
dd.selectedIndex = [...dd.options].findIndex (option => option.text === textToFind);
答案 2 :(得分:5)
您可以遍历select_obj.options。每个选项对象中都有一个#text方法,您可以使用它来比较您想要的并设置select_obj的selectedIndex。
答案 3 :(得分:0)
这适用于最新的 Chrome、FireFox 和 Edge,但不适用于 IE11:
document.evaluate('//option[text()="Yahoo"]', document).iterateNext().selected = 'selected';
如果你想忽略标题周围的空格:
document.evaluate('//option[normalize-space(text())="Yahoo"]', document).iterateNext().selected = 'selected'