如何使用JavaScript在选择下拉列表中选择值?
我有一个这样的下拉列表如何使用JavaScript在选择下拉列表中选择值?,javascript,Javascript,我有一个这样的下拉列表 <select style="width: 280px" id="Mobility" name="Mobility"> <option selected="">Please Select</option> <option>K</option> <option>1</option> <option>2</option> <option>
<select style="width: 280px" id="Mobility" name="Mobility">
<option selected="">Please Select</option>
<option>K</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
使用:
替代方法:
循环遍历每个值:
//Get select object
var objSelect = document.getElementById("Mobility");
//Set selected
setSelectedValue(objSelect, "10");
function setSelectedValue(selectObj, valueToSet) {
for (var i = 0; i < selectObj.options.length; i++) {
if (selectObj.options[i].text== valueToSet) {
selectObj.options[i].selected = true;
return;
}
}
}
//获取选择对象
var objSelect=document.getElementById(“移动”);
//选定
setSelectedValue(对象选择,“10”);
功能设置SelectedValue(selectObj,valueToSet){
对于(变量i=0;i
document.forms['someform'].elements['someelement'].value
函数集selectedIndex(s,v){
function setSelectedIndex(s, v) {
for ( var i = 0; i < s.options.length; i++ ) {
if ( s.options[i].value == v ) {
s.options[i].selected = true;
return;
}
}
}
对于(var i=0;i
其中s是下拉列表,v是值是。正如文章中提到的,
value
属性是非标准的,不适用于IE。您需要使用selectedIndex
属性来实现这一点。您可以参考W3DOM参考来查看HTML元素的属性。以下链接将为您提供可在select元素上使用的属性列表
document.querySelector('option[value=" + value +"]').selected = true
更新
这在2011年IE上不受支持。正如finnTheHuman所评论的,它目前是受支持的。如果您知道该值,这是最简单的解决方案
document.querySelector('option[value=" + value +"]').selected = true
我意识到这是一个老问题,但我将发布我的用例的解决方案,以防其他人遇到与我在实现时相同的情况 我在试图解决同样的问题时发现了这个问题。我得到了90%的回报。然而,对于我的用例,从下拉列表中选择项目也会从下拉列表的
onchange
事件触发页面上的操作。正如所写的那样,它并没有触发这个事件(至少在Firefox中是这样,我正在测试Firefox)。因此,我做了以下小改动:
function setSelectedValue(object, value) {
for (var i = 0; i < object.options.length; i++) {
if (object.options[i].text === value) {
object.options[i].selected = true;
object.onchange();
return;
}
}
// Throw exception if option `value` not found.
var tag = object.nodeName;
var str = "Option '" + value + "' not found";
if (object.id != '') {
str = str + " in //" + object.nodeName.toLowerCase()
+ "[@id='" + object.id + "']."
}
else if (object.name != '') {
str = str + " in //" + object.nodeName.toLowerCase()
+ "[@name='" + object.name + "']."
}
else {
str += "."
}
throw str;
}
函数setSelectedValue(对象、值){
对于(var i=0;i
注意我添加到的object.onchange()
调用。这将调用处理程序以确保页面上的操作发生
编辑
添加了代码,以便在未找到选项值
时引发异常;这是我的用例所需要的。使用Javascript:
document.getElementById('drpSelectSourceLibrary').value = 'Seven';
使用Jquery:
$('select').prop('selectedIndex', 3); // This will select the 4th option from the dropdown list
而不是做
function setSelectedIndex(s, v) {
for ( var i = 0; i < s.options.length; i++ ) {
if ( s.options[i].value == v ) {
s.options[i].selected = true;
return;
}
}
}
功能设置选定索引(s,v){
对于(var i=0;i
我这样做解决了这个问题
function setSelectedValue(dropDownList, valueToSet) {
var option = dropDownList.firstChild;
for (var i = 0; i < dropDownList.length; i++) {
if (option.text.trim().toLowerCase() == valueToSet.trim().toLowerCase()) {
option.selected = true;
return;
}
option = option.nextElementSibling;
}
}
功能设置选定值(下拉列表,值设置){
var option=dropDownList.firstChild;
对于(变量i=0;i
如果使用字符串,则应使用.trim()
方法,有时空格会导致问题,并且在javascript调试会话中很难检测到空格
dropDownList.firstChild实际上是您的第一个选项
标签。然后,通过执行option.nextElementSibling
可以转到下一个option
标记,以便在dropdownlist元素中选择下一个选项。如果要获取选项
标记的数量,可以使用我在for循环中使用的dropDownList.length
希望这对某人有所帮助。最简单的方法就是使用它
document.getElementById("mySelect").value = "banana";
myselect是您下拉列表的名称香蕉只是您下拉列表中的一个项目使用一些ES6:
首先获取选项,根据选项筛选值并将选定属性设置为true
window.onload=()=>{
[…document.querySelector(`Mobility`).选项]
.filter(x=>x.value==“12”)[0]
.setAttribute('selected',true);
};代码>
请选择
K
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
我当然更喜欢詹姆斯·希尔(James Hill)的方法,但它仍然可能对某些人有用。不管怎样,如果不使用selectedIndex?如果我使用元素名而不是ID,该怎么办?@GregM,基于OP中的HTML,这是行不通的s.options[i]。value
应该是s.options[i]。text
@GregM,OP没有为选项指定值,只指定text。好的,是的,你的权利:(,如果他输入了一些值,我的答案就在那里;)如果他在选项中指定了值,比如K
参考本文的可能副本:如果没有元素ID怎么办?我有元素的名称。@RiponAlWasim您可以使用document.getElementsByName var element=document.getElementsByName(“移动”)[0];请记下日期。这篇评论写在2011年。我刚试过。IE8上的值很好用。仅供参考。:)“七”是从哪里来的?很好用。这应该是最好的答案
document.getElementById("mySelect").value = "banana";