如何通过将文本与纯 JavaScript 匹配来获取选择菜单中选项的索引?
我有一个选择菜单,我需要根据选项元素的文本值动态选择选项。例如,我的选择如下所示:
<select id="names">
<option value="">Please Select</option>
<option value="1">John</option>
<option value="2">Steve</option>
<option value="3">Max</option>
</select>
如果我有字符串“Max”,我怎样才能获得该选项的索引为4,以便我可以使用JavaScript动态地将其设置为selectedIndex?
没有 jQuery。
I have a select menu and I need to dynamically select the option based on the text value of the option element. For example, my select looks like this:
<select id="names">
<option value="">Please Select</option>
<option value="1">John</option>
<option value="2">Steve</option>
<option value="3">Max</option>
</select>
If I have the string "Max", how can I get that the index of the option is 4 so I can dynamically set this as the selectedIndex with JavaScript?
No jQuery.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
试试这个,它应该找到然后在选择框中选择相关选项。
Try this, it should find and then select the relevant option in the select box.
您可以使用这个简短的函数来做到这一点:
参数:
select
:一个HTMLSelect
元素optionName< /code>:作为
字符串
说明:
在函数体的第一行,我们使用
Array.from()< 以
array
形式检索想要一些使用它的理由吗?
它的实现很短,语义也很清晰。也是纯JS。
You could use this short function to do that:
Arguments:
select
: anHTMLSelect
elementoptionName
: as astring
Explanation:
On the first line of the function body we retrieve the
<select>
options as anarray
usingArray.from()
.This allow us to use Array.prototype.findIndex() to return the index of the first option that match the provided name, if any or return -1 if there is no match.
Want some reasons to use it ?
It has a short implementation and the semantic is pretty clear. Also pure JS.
演示。
Demo.
在普通js中
in PLAIN js
options 属性将选项存储在选择菜单中 - 迭代它并比较内容。
JSFiddle: http://jsfiddle.net/cuTxu/2
The options property stores the options in a select menu - iterate over it and compare the contents.
JSFiddle: http://jsfiddle.net/cuTxu/2
这应该可以解决问题:
请注意,索引是从零开始的,这意味着它比您预期的少一。
This should do the trick:
Please note that the index is zero based, what mean it is one less than you would expect.
[编辑 - 扩展为包括非 jquery 方法]
我强烈建议为此使用 jQuery,因为该解决方案很简单:
但是,无论如何,这里有一个纯 JavaScript 实现:
用法示例:
警报
3
[edit - expanded to include non-jquery method]
I strongly recommend using jQuery for this since the solution is a one-liner:
However, here's a pure JavaScript implementation anyway:
Example usage:
Alerts
3
http://jsfiddle.net/x8f7g/1/
您想要选择该元素,迭代数组,找到文本值,并返回索引。
示例:
http://jsfiddle.net/x8f7g/1/
You want to select the element, iterate over the array, find the text value, and return the index.
Example: