如何在下拉select一个值的JavaScript?
我有这样的下拉
<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>
我使用这一行来select它在Mozilla不工作在IE中的值? 为什么它不工作?
var element = document.getElementById("Mobility"); element.value = "10";
使用selectedIndex
属性 :
document.getElementById("Mobility").selectedIndex = 12; //Option 10
备选方法:
遍历每个值:
//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; } } }
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是值
最简单的解决scheme,如果你知道的价值
document.querySelector('option[value=" + value +"]').selected = true
最简单的方法就是使用这个
document.getElementById("mySelect").value = "banana";
myselect是你的下拉式香蕉的名字只是你的下拉列表中的一个项目
我意识到这是一个古老的问题,但是我会为我的用例发布解决scheme,以防其他人遇到我在执行James Hill的答案(上面)时所遇到的相同情况。
我试图解决同样的问题,我发现这个问题。 詹姆斯的回答让我有90% 的回答 。 但是,对于我的用例,从下拉列表中select项目也触发了下拉的onchange
事件页面上的操作。 James写的代码没有触发这个事件(至less在我testing的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; }
请注意我添加到原始解决scheme中的object.onchange()
调用。 这将调用处理程序以确保页面上的操作发生。
编辑
如果选项value
未find,则添加代码以引发exception; 这是我的用例需要的。
这可以做到这一点
document.forms['someform'].elements['someelement'].value
是。 正如在post中提到的, value
属性是非标准的,并且不适用于IE。 您将需要使用selectedIndex
属性来实现这一点。 您可以参考w3schools DOM参考来查看HTML元素的属性。 以下链接将给你在select元素上可以使用的属性列表。
http://www.w3schools.com/jsref/dom_obj_select.asp
更新
IE浏览器在2011年没有得到支持。 正如芬兰人所说,目前是支持的。
请参阅这篇文章 。 他们已经用很多方式使用JavaScript或者Jquery来解释它。
使用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; } } }
我这样做解决了这个问题
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; } }
如果你使用string,你应该使用.trim()
方法,有时候空格会导致麻烦,而且在javascriptdebugging会话中很难检测到。
dropDownList.firstChild
实际上是您的第一个option
标记。 然后,通过执行option.nextElementSibling
您可以转到下一个option
标记,以便在下拉列表元素中进行下一个select。 如果你想获得option
标签的数量,你可以使用我在for循环中使用的dropDownList.length
。
希望这有助于某人。