如何使用显示文本作为参考来设置select元素的selectedIndex?
示例:
<input id="AnimalToFind" type="text" />
<select id="Animals">
<option value="0">Chicken</option>
<option value="1">Crocodile</option>
<option value="2">Monkey</option>
</select>
<input type="button" onclick="SelectAnimal()" />
<script type="text/javascript">
function SelectAnimal()
{
//Set selected option of Animals based on AnimalToFind value...
}
</script>
没有循环,有没有其他方法可以做到这一点?你知道,我在想一个内置的JavaScript代码。另外,我不使用jQuery ......
答案 0 :(得分:57)
试试这个:
function SelectAnimal() {
var sel = document.getElementById('Animals');
var val = document.getElementById('AnimalToFind').value;
for(var i = 0, j = sel.options.length; i < j; ++i) {
if(sel.options[i].innerHTML === val) {
sel.selectedIndex = i;
break;
}
}
}
答案 1 :(得分:9)
<script type="text/javascript">
function SelectAnimal(){
//Set selected option of Animals based on AnimalToFind value...
var animalTofind = document.getElementById('AnimalToFind');
var selection = document.getElementById('Animals');
// select element
for(var i=0;i<selection.options.length;i++){
if (selection.options[i].innerHTML == animalTofind.value) {
selection.selectedIndex = i;
break;
}
}
}
</script>
设置select标签的selectedIndex属性将选择正确的项目。最好不要比较两个值(选项innerHTML&amp;&amp;动物值),你可以使用indexOf()方法或正则表达式来选择正确的选项,尽管有空格或空格
selection.options[i].innerHTML.indexOf(animalTofind.value) != -1;
或使用.match(/regular expression/)
答案 2 :(得分:3)
试试这个:
function SelectAnimal()
{
var animals = document.getElementById('Animals');
var animalsToFind = document.getElementById('AnimalToFind');
// get the options length
var len = animals.options.length;
for(i = 0; i < len; i++)
{
// check the current option's text if it's the same with the input box
if (animals.options[i].innerHTML == animalsToFind.value)
{
animals.selectedIndex = i;
break;
}
}
}
答案 3 :(得分:1)
您可以通过以下代码设置索引:
sel.selectedIndex = 0;
但请记住此练习中的注意事项,如果您选择下拉列表中选择的上一个值,则无法调用服务器端onclick
方法。
答案 4 :(得分:1)
如果您希望没有循环或jquery,可以使用以下命令 这是JavaScript。这适用于当前的Web浏览器。考虑到这个问题的存在时间,我不确定是否可以在2011年使用。请注意,使用CSS样式选择器非常强大,可以帮助缩短很多代码。
// Please note that querySelectorAll will return a match for
// for the term...if there is more than one then you will
// have to loop through the returned object
var selectAnimal = function() {
var animals = document.getElementById('animal');
if (animals) {
var x = animals.querySelectorAll('option[value="frog"]');
if (x.length === 1) {
console.log(x[0].index);
animals.selectedIndex = x[0].index;
}
}
}
<html>
<head>
<title>Test without loop or jquery</title>
</head>
<body>
<label>Animal to select
<select id='animal'>
<option value='nothing'></option>
<option value='dog'>dog</option>
<option value='cat'>cat</option>
<option value='mouse'>mouse</option>
<option value='rat'>rat</option>
<option value='frog'>frog</option>
<option value='horse'>horse</option>
</select>
</label>
<button onclick="selectAnimal()">Click to select animal</button>
</body>
</html>
document.getElementById('Animal')。querySelectorAll('option [value =“ searchterm”]'); 在索引对象中,您现在可以执行以下操作: x [0] .index
答案 5 :(得分:0)
为您的选项添加名称属性:
<option value="0" name="Chicken">Chicken</option>
使用它可以使用HTMLOptionsCollection.namedItem(&#34; Chicken&#34;)。value来设置select元素的值。
答案 6 :(得分:-1)
您可以使用HTMLOptionsCollection.namedItem() 这意味着您必须定义选择选项以具有name属性并具有显示文本的值。 例如 加利福尼亚