我有这样的选项菜单:

<form name="AddAndEdit">
   <select name="list" id="personlist">
      <option value="11">Person1</option>
      <option value="27">Person2</option>
      <option value="17">Person3</option>
      <option value="10">Person4</option>
      <option value="7">Person5</option>
      <option value="32">Person6</option>
      <option value="18">Person7</option>
      <option value="29">Person8</option>
      <option value="28">Person9</option>
      <option value="34">Person10</option>
      <option value="12">Person11</option>
      <option value="19">Person12</option>
   </select>
</form>

现在我想通过使用href来改变所选的选项。例如:

<a href="javascript:void(0);"
  onclick="document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected';">change</a>

但是我想选择值=11 (Person1)的选项,而不是Person12。

如何更改此代码?


当前回答

我相信博客文章JavaScript初学者-按值选择下拉选项可能会对你有帮助。

<a href="javascript:void(0);" onclick="selectItemByValue(document.getElementById('personlist'),11)">change</a>

function selectItemByValue(elmnt, value){

  for(var i=0; i < elmnt.options.length; i++)
  {
    if(elmnt.options[i].value === value) {
      elmnt.selectedIndex = i;
      break;
    }
  }
}

其他回答

你也可以使用JQuery

$(document).ready(function () {
  $('#personlist').val("10");
}

我相信博客文章JavaScript初学者-按值选择下拉选项可能会对你有帮助。

<a href="javascript:void(0);" onclick="selectItemByValue(document.getElementById('personlist'),11)">change</a>

function selectItemByValue(elmnt, value){

  for(var i=0; i < elmnt.options.length; i++)
  {
    if(elmnt.options[i].value === value) {
      elmnt.selectedIndex = i;
      break;
    }
  }
}

改变

document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected'

to

document.getElementById('personlist').value=Person_ID;

从技术上讲,您自己的答案并没有错,但您弄错了索引,因为索引从0开始,而不是从1开始。所以你选错了。

document.getElementById('personlist').getElementsByTagName('option')[**10**].selected = 'selected';

此外,对于标签不完全是英文或数字的情况,您的答案实际上是一个很好的答案。

例如,如果它们使用亚洲字符,其他告诉您使用.value()的解决方案可能并不总是有效,不会做任何事情。按标签选择是忽略实际文本并按元素本身选择的好方法。

mySelect.value = myValue;

其中mySelect是你的选择框,myValue是你想要更改的值。