答案 0 :(得分:4)
您可以在option
中的select
元素中循环查找匹配项,例如:
const text = "6524125";
const options = document.getElementById("account").options;
for (let n = 0; n < options.length; ++n) {
const option = options[n];
if (option.text === text) {
option.selected = true;
break;
}
}
<select id="account" class="form-control" name="account">
<option value="USFSDsdfsFLIJSD656FKLLS5admFOWEJF0SOF">5265241</option>
<option value="LDSOJFksdfo52slkdfjskdfooojoijoijoj56">6524125</option>
</select>
在某些现代环境中,options
是可迭代的,因此您可以更简洁地做到这一点:
const text = "6524125";
for (const option of document.getElementById("account").options) {
if (option.text === text) {
option.selected = true;
break;
}
}
<select id="account" class="form-control" name="account">
<option value="USFSDsdfsFLIJSD656FKLLS5admFOWEJF0SOF">5265241</option>
<option value="LDSOJFksdfo52slkdfjskdfooojoijoijoj56">6524125</option>
</select>
尽管该规范并不要求options
是可迭代的(它是HTMLOptionsCollection
,它继承自HTMLCollection
,与NodeList
不同,它是不可迭代的)。如果您是在自己的应用或页面(而不是库)中执行此操作,则可以使HTMLCollection
迭代,如this answer所示。
答案 1 :(得分:2)
如果元素selected
与指定值匹配,则可以使用Array.prototype.forEach
方法遍历元素并将其textContent
属性设置为true,如下所示:
const text = "6524125";
[...document.getElementsByTagName("option")].forEach(element => {
if (element.textContent === text) {
element.selected = true;
}
});
<select id="account" class="form-control" name="account">
<option value="USFSDsdfsFLIJSD656FKLLS5admFOWEJF0SOF">5265241</option>
<option value="LDSOJFksdfo52slkdfjskdfooojoijoijoj56">6524125</option>
</select>
另一种方法是手动设置目标option
元素的selected
属性,这样可以避免编写不必要的代码。
换句话说,您可以用单个HTML属性替换大约6行JavaScript。
如果您只想set the default value for an HTML "<select>" element,这也很棒。
例如:
<select id="account" class="form-control" name="account">
<option value="USFSDsdfsFLIJSD656FKLLS5admFOWEJF0SOF">5265241</option>
<option value="LDSOJFksdfo52slkdfjskdfooojoijoijoj56" selected="selected">6524125</option>
</select>
更新:我刚刚看到您在comments section of T.J. Crowder's post中包含了一个jQuery代码段。
如果您使用的是jQuery,则可以使用:contains
选择器和jQuery.fn.attr
方法来选择目标选项并设置其selected
属性:
$("option:contains('6524125')").attr("selected", true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<select id="account" class="form-control" name="account">
<option value="USFSDsdfsFLIJSD656FKLLS5admFOWEJF0SOF">5265241</option>
<option value="LDSOJFksdfo52slkdfjskdfooojoijoijoj56" selected="selected">6524125</option>
</select>
如果您想从目标元素的同级中删除selected
属性,则可以使用jQuery.fn.siblings
和jQuery.fn.removeAttr
方法,如下所示:
$("option:contains('6524125')").attr("selected", true).siblings().removeAttr("selected");
注意::有关forEach
方法visit this link的更多信息。
祝你好运。